c++ - Windows 10 上的 CMake + MinGW + Clang

标签 c++ windows cmake clang mingw

我想使用 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?

最佳答案

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

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

关于c++ - Windows 10 上的 CMake + MinGW + Clang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823993/

相关文章:

c++ - 如何动态创建具有多个对应类的多个线程以解决许多数独难题

c++ - 如何在标准字符串中搜索/查找和替换?

batch-file - Windows 脚本 : What and How to do this? 批处理文件或其他?

c++ - 从 Windows 根存储中静默删除证书

c++ - rpmbuild check-rpath错误报告路径不是绝对路径

c++ - 不理解为什么这个 C++ 递归函数起作用背后的逻辑

在另一个类中使用时的 C++ 对象类问题

ios - 如何使用 Windows 开发机器为 iPhone 开发?

c++ - 在 Qt Creator 中将库链接到 CMake (MSVC)

c - 如何将 Zlib 与 Cmake 链接