小编swe*_*ish的帖子

如何让 cmake 专门使用我的 llvm Homebrew 安装?

我的目标是为我的 cmake 命令设置别名,以便它专门使用我的 llvm 自制安装,而不是 Xcode 安装的套件。我也想保留系统默认值。我在 Catalina 上使用最新的 Xcode 和 homebrew llvm。

我的第一步是使用自制的 clang++ 和 libc++,我可以手动完成

/usr/local/opt/llvm/bin/clang++ -Wall -Wextra -std=c++17 -stdlib=libc++ \
-nostdinc++ -I/usr/local/opt/llvm/include/c++/v1 \
-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib \
main.cc
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这是我的 CMakeLists.txt;它非常准系统,因为我想做的大部分工作不属于 CMakeLists.txt,我只是想编译一个玩具程序。

cmake_minimum_required(VERSION 3.15)

project(test)

set(CMAKE_CXX_STANDARD 17)

add_executable(test
               main.cc)
Run Code Online (Sandbox Code Playgroud)

但我已经被 cmake 困住了。我可以使用
-DCMAKE_CXX_COMPILER="/usr/local/opt/llvm/bin/clang++C/clang 指定编译器。我也在使用CMAKE_PREFIX_PATH,但是当我打开build.ninja文件时,我仍然看到它引用 Xcode 目录。添加 aCMAKE_IGNORE_PATH似乎并没有让它真正忽略 /Applications/Xcode.app。

我还尝试将标志CMAKE_CXX_STANDARD_LIBRARIES和添加CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES到我的 cmake 命令中,但如果我这样做,我开始出现链接器错误(我相信仍然使用系统链接器而不是自制程序的 ld64.lld)。

这是我当前工作的 cmake 命令作为参考:

cmake -DCMAKE_PREFIX_PATH="/usr/local/opt/llvm" \
-DCMAKE_CXX_COMPILER="/usr/local/opt/llvm/bin/clang++" \
-DCMAKE_C_COMPILER="/usr/local/opt/llvm/bin/clang" -G Ninja ..
Run Code Online (Sandbox Code Playgroud)

仍然需要特定的编译器路径,因为 cmake 可以轻松直接连接到 AppleClang。 …

c++ macos homebrew cmake

9
推荐指数
0
解决办法
2633
查看次数

标签 统计

c++ ×1

cmake ×1

homebrew ×1

macos ×1