You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下如何将clang与libc++设为vcpkg默认工具链?

在Linux下配置vcpkg默认使用Clang与libc++工具链

1. 创建自定义Clang+libc++ Triplet文件

vcpkg通过triplet文件定义工具链和编译规则,你需要创建一个自定义triplet来指定Clang和libc++:

  1. 在vcpkg根目录下创建triplets/custom目录(不存在则新建);
  2. 在该目录下新建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:01:15