【问题标题】:CMake + MinGW + Clang on Windows 10Windows 10 上的 CMake + MinGW + Clang
【发布时间】:2017-10-05 01:26:12
【问题描述】:

我想使用 Clang 4.0、CMake 3.8.1、MinGW x86_64 6.3.0 编译应用程序。我试过了:

cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=clang.exe -DCMAKE_CXX_COMPILER=clang++ ..\code

但由于传递了 Visual Studio 的编译器参数,测试程序的编译失败。我根本不想使用 Visual Studio。 输出:

-- The C compiler identification is Clang 4.0.0
-- The CXX compiler identification is Clang 4.0.0
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang.exe
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang.exe -- broken
CMake Error at C:/Program Files/CMake/share/cmake-3.8/Modules/CMakeTestCCompiler.cmake:51 (message):
The C compiler "C:/Program Files/LLVM/bin/clang.exe" is not able to compile a simple test program.
clang.exe: error: no such file or directory: '/nologo'
clang.exe: error: no such file or directory: '/DWIN32'
clang.exe: error: no such file or directory: '/D_WINDOWS'

我也试过了:

cmake -G "MinGW Makefiles"  -DCMAKE_C_COMPILER="C:/Program Files/LLVM/msbuild-bin/cl.exe" -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/msbuild-bin/cl.exe" -DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe" ..\code

在编译测试程序时也失败了:

 C:\PROGRA~1\LLVM\bin\lld-link.exe /nologo
 @CMakeFiles\cmTC_afe59.dir\objects1.rsp /out:cmTC_afe59.exe
 /implib:cmTC_afe59.lib
 /pdb:C:\...........\_build\CMakeFiles\CMakeTmp\cmTC_afe59.pdb
 /version:0.0 /machine:x64 /debug /pdbtype:sept /INCREMENTAL:YES
 /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib
 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
 odbc32.lib odbccp32.lib

 error: could not open /pdbtype:sept: no such file or directory

是否可以在 Windows 10 上使用 MinGw 强制 Clang?

【问题讨论】:

  • 我不知道你是谁,或者你看到了什么,但我有这个 exact 问题,具体到目录名称...如果我们中的任何一个找到解决方案,告诉对方
  • 我遇到了同样的错误,“objects1.rsp”行前面有一个 at 符号 (@)。我在一个带有 CMake 3.12.1 的 Windows 10 机器上NMake JOM 生成器
  • 我遇到了lld-link.exe: error: could not open kernel32.lib: no such file or directory,因为 CMake 或其他东西将 kernel32.lib 等放在了链接线上。我尝试使用 LLVM/clang 7.0

标签: c++ windows cmake clang mingw


【解决方案1】:

这些是 MSVC 参数。在检查CMakeLists.txt 中的IF(WIN32) 时,我遇到了几个假设这些工作的库,而它应该是IF(MSVC)

http://winlibs.com/ 有一个可用于 GCC 和 LLVM/CLang 的 MinGW-w64,但由于它不是 MSVC,仍然需要避免这些参数,所以我建议您修复 CMakeLists.txt 并再次运行 cmake。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2021-03-01
    • 2018-02-17
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多