Linux环境下如何将clang与libc++设为vcpkg默认工具链?
在Linux下配置vcpkg默认使用Clang与libc++工具链
1. 创建自定义Clang+libc++ Triplet文件
vcpkg通过triplet文件定义工具链和编译规则,你需要创建一个自定义triplet来指定Clang和libc++:
- 在vcpkg根目录下创建
triplets/custom目录(不存在则新建); - 在该目录下新建
x64-linux-clang-libcxx.cmake文件,写入以下配置:
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE dynamic) # 需静态链接可改为static set(VCPKG_CMAKE_SYSTEM_NAME Linux) # 指定Clang编译器 set(CMAKE_C_COMPILER clang CACHE STRING "") set(CMAKE_CXX_COMPILER clang++ CACHE STRING "") # 配置libc++编译与链接参数 set(CMAKE_CXX_FLAGS_INIT "-stdlib=libc++ -std=c++17" CACHE STRING "") set(CMAKE_C_FLAGS_INIT "-stdlib=libc++" CACHE STRING "") set(CMAKE_EXE_LINKER_FLAGS_INIT "-stdlib=libc++ -lc++abi" CACHE STRING "") set(CMAKE_SHARED_LINKER_FLAGS_INIT "-stdlib=libc++ -lc++abi" CACHE STRING "") set(CMAKE_MODULE_LINKER_FLAGS_INIT "-stdlib=libc++ -lc++abi" CACHE STRING "") # 全局vcpkg参数配置 set(VCPKG_CXX_FLAGS "-stdlib=libc++") set(VCPKG_C_FLAGS "-stdlib=libc++") set(VCPKG_LINKER_FLAGS "-stdlib=libc++ -lc++abi")
2. 设置该triplet为默认
有两种方式让vcpkg默认使用这个自定义triplet:
方式一:环境变量临时/永久生效
终端执行以下命令(临时生效):
export VCPKG_DEFAULT_TRIPLET=x64-linux-clang-libcxx
若需永久生效,将上述命令添加到shell配置文件(如~/.bashrc、~/.zshrc)中。
方式二:vcpkg配置文件设置
在vcpkg根目录下创建或修改settings.json文件,添加:
{ "defaultTriplet": "x64-linux-clang-libcxx" }
3. 安装系统依赖
确保系统已安装Clang和libc++的开发包:
- Ubuntu/Debian系:
sudo apt install clang libc++-dev libc++abi-dev
- Fedora/RHEL系:
sudo dnf install clang libcxx-devel libcxxabi-devel
4. 验证配置
安装任意包(如fmt)并检查工具链是否生效:
vcpkg install fmt
可通过编译测试程序并检查依赖验证:
// test.cpp #include <fmt/core.h> int main() { fmt::print("Hello\n"); return 0; }
编译后查看依赖:
clang++ test.cpp -o test $(vcpkg integrate install) ldd test | grep libc++
若输出包含libc++.so,说明配置成功。
内容的提问来源于stack exchange,提问作者endingly
相关产品推荐
相关产品推荐

