在安装了VS2017和LLVM的Windows 10上
和CMAKE只将VC编译器作为默认值并忽略CMakeLists.txt和命令行set
中的-DCMAKE_CXX_COMPILER
命令
我不知道如何使用LLVM Clang
我检查了许多现有问题,但它们对我不起作用
的CMakeLists.txt
cmake_minimum_required(VERSION 3.11)
set(CMAKE_CXX_COMPILER "C:\\Program Files\\LLVM\\bin\\Clang++")
project(CMakeTest1 VERSION 0.0.0 LANGUAGES CXX)
aux_source_directory(. MAINDIR)
add_executable(CMakeTest1 ${MAINDIR})
的main.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
使用git bash运行命令
***@DESKTOP-8KJ4J0H MINGW64 /d/CMakeTest1
$ cmake -DCMAKE_CXX_COMPILER="C:\Program Files\LLVM\bin\Clang++" .
-- Building for: Visual Studio 15 2017
-- The CXX compiler identification is MSVC 19.13.26129.0
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/CMakeTest1
我的CXX编译器标识被强制为MSVC,并且不能通过任何方法进行更改。
不明白为什么
EDITED: 我想强烈声明的是,我发誓并且清楚地知道我清理了所有生成的文件形成文件夹,并且只有CMakeLists.txt和main.cpp存在。并且我不想让旧缓存文件未被删除
答案 0 :(得分:0)
这可能是由于Windows中CMake
的默认generator造成的。
-- Building for: Visual Studio 15 2017
...
您可以通过在命令行中添加-G <generator name>
来更改生成器。在您的情况下,我认为-G 'MSYS Makefiles'
可能有用。
答案 1 :(得分:0)
这是因为CMAKE_CXX_COMPILER
是从您的生成器推断出来的(Windows上默认使用最新的 Visual Studio ),因此它是cl.exe
。
要切换到clang
,您应该使用其他发电机,例如Ninja
或Unix Makefiles
。
如果您想将VS与clang-cl.exe
一起使用,则需要通过添加标记-TLLVM-vs2014
将平台工具集设置为适当的版本。
有关详细信息,请参阅this instructions。