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

时间:2016-07-03 16:19:22

标签: c++ windows build cmake clang

我有一个使用CMake构建的C ++项目。我通常在OSX上构建,但现在我正在尝试使用Windows版本。出于兼容性原因,我想在Windows上使用Clang。

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

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

它也安装在我的路径上:

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

我有两个问题:

  1. 当我致电clang++时,如何告诉CMake使用cmake --build
  2. 如何在构建配置了哪个编译器CMake之前检查?

3 个答案:

答案 0 :(得分:33)

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

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

我刚用

进行了成功的测试

所有安装到其标准路径的全局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添加到我的搜索路径中:

LLVM Installation with Add to PATH

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

VS Project Properties - Platform Toolsets

<强>参考

答案 1 :(得分:3)

作为 Visual Studio 2019 的更新,您可以通过 Visual Studio 安装程序 安装 clang-cl 工具链并使用它生成 .sln 文件:

> mkdir build && cd build
> cmake .. -G "Visual Studio 16 2019" -T ClangCL -A x64

当然你现在也可以直接打开包含 CMakeLists.txt 文件的文件夹,VS 会提供不错的支持,允许你选择编译器工具链,但是它不会让你使用图形调试器,这可能会对你很重要。

答案 2 :(得分:0)

请遵循以下说明:

如果没有安装choco,请安装:https://chocolatey.org/install

在提示中使用A

choco install mingw
choco install llvm
choco install cmake

重置外壳,以便正确设置环境变量(您可以检查是否将每个bin文件夹添加到您的路径中。)

使用MinGW

转到您的项目并运行:

cmake-gui .

从上方菜单中选择Tools/Configure,然后执行以下设置:

选择MinGW Makefile和第二个选项(指定本机编译器): mingw

给出编译器的路径: compilers

使用Visual Studio

在某些文件夹中安装llvm-utils:

git clone https://github.com/zufuliu/llvm-utils.git
cd llvm-utils/VS2017
.\install.bat

转到您的项目并运行:

cmake-gui .

从上方菜单中选择Tools/Configure,然后执行以下设置:

选择Visual Studio 2019和第二个选项(指定本机编译器)。组 对于Visual Studio 2019,LLVM_v142。对于其他人,请参见herevisual_studio

给出编译器的路径: compilers