如何让CMake在Windows上使用Clang?

y1aodyip  于 2023-02-12  发布在  Windows
关注(0)|答案(3)|浏览(293)

我有一个使用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.当我调用cmake --build时,如何告诉CMake使用clang++
1.在编译CMake之前,我如何检查它配置了哪个编译器?

uqcuzwp8

uqcuzwp81#

除了Clang编译器本身之外,您还需要一个用于Windows的构建/链接环境。
最新的CMake 3.6版本确实有几个集成的支持Windows上的Clang构建环境(例如Visual Studio、Cygwin;参见Release Notes)。
我刚刚成功地测试了

所有文件都安装在全局PATH环境中bin目录的标准路径中。
您需要知道的是使用CMake**-T"LLVM-vs2014"**命令行选项设置正确的工具集。在配置过程中,CMake会让您知道它找到/使用了哪个编译器。

    • CMakeLists.文本文件**
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添加到搜索路径中:

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

mwg9r5ms

mwg9r5ms2#

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

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

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

然而,一个更好的工作流程是直接在VS中简单地包含CMakeLists.txt文件的open the folder,它将把它识别为一个CMake项目,并提供直接设置编译器等的能力。
我发现这种方法的唯一缺点是Visual Studio图形调试器工作流不能使用它,如果您使用DirectX等进行开发,这将对您产生影响。

xpcnnkqh

xpcnnkqh3#

请遵循以下说明:
安装choco如果你没有它:https://chocolatey.org/install

choco install ninja -y
choco install cmake -y
choco install llvm -y

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

使用忍者

从PowerShell

$env:CC="C:\Program Files\LLVM\bin\clang.exe"
$env:CXX="C:\Program Files\LLVM\bin\clang++.exe"
cmake -S ./ -B ./build -G "Ninja-Multi-Config"
cmake --build ./build --config Release

来自GUI

转到您的项目并运行:

cmake-gui .

从上层菜单中选择Tools/Configure,并遵循以下设置:
选择"Ninja Multi-Config"并指定本机编译器:

提供编译器的路径:

最后,运行

cmake --build ./build --config Release

使用Visual Studio

使用GUI

在某个文件夹中安装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。有关其他版本,请参阅此处了解较旧版本。

提供编译器的路径:

最后,运行

cmake --build ./build --config Release

相关问题