我如何告诉CMake在Windows上使用Clang?

我有一个使用CMake构build的C ++项目。 我通常build立在OSX上,但是现在我正在尝试使Windows版本工作。 为了兼容性的原因,我想在Windows上使用Clang。

我从LLVM安装了预编译的Clang 3.8二进制文件:

C:\Program Files\LLVM\bin\clang.exe C:\Program Files\LLVM\bin\clang++.exe 

它也安装在我的path上:

 >clang++ clang++.exe: error: no input files 

我有两个问题:

  1. 当我调用cmake --build时,如何告诉CMake使用clang++
  2. 在构buildCMake编译器之前如何检查?

除了Clang编译器本身之外,您还需要Windows的构建/链接环境。

最新的CMake 3.6版本在Windows上有几个集成的受支持的Clang构建环境(例如Visual Studio,Cygwin;请参阅发行说明 )。

我刚刚运行一个成功的测试

所有安装到他们的标准路径与他们的bin目录在全局PATH环境中。

您需要知道的部分是使用CMake -T"LLVM-vs2014"命令行选项设置正确的工具集。 在配置过程中,CMake会让你知道它找到了哪个编译器。

的CMakeLists.txt

 cmake_minimum_required(VERSION 3.6) project(HelloWorld) file( WRITE main.cpp "#include <iostream>\n" "int main() { std::cout << \"Hello World!\" << std::endl; return 0; }" ) add_executable(${PROJECT_NAME} main.cpp) 

Windows控制台

 ...> mkdir VS2015 ...> cd VS2015 ...\VS2015> cmake -G"Visual Studio 14 2015" -T"LLVM-vs2014" .. -- The C compiler identification is Clang 3.9.0 -- The CXX compiler identification is Clang 3.9.0 -- Check for working C compiler: C:/Program Files (x86)/LLVM/msbuild-bin/cl.exe -- Check for working C compiler: C:/Program Files (x86)/LLVM/msbuild-bin/cl.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: C:/Program Files (x86)/LLVM/msbuild-bin/cl.exe -- Check for working CXX compiler: C:/Program Files (x86)/LLVM/msbuild-bin/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: .../VS2015 ...\VS2015> cmake --build . Microsoft (R)-Buildmodul, Version 14.0.23107.0 [...] ...\VS2015> Debug\HelloWorld.exe Hello World! 

安装提示

请注意,在安装过程中,我已将LLVM添加到搜索路径中:

使用添加到PATH的LLVM安装

你可以在任何VS项目的属性页面中检查可用的“平台工具集”:

VS项目属性 - 平台工具集

参考

  • 什么是-D定义告诉Cmake在哪里可以找到nmake?
  • Linker for Clang?
  • 使用CMake在GCC和Clang / LLVM之间切换