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

LLVM 19版本下如何仅构建libc++而非完整LLVM项目

解决LLVM 19+单独构建libc++的CMake配置问题

核心问题原因

LLVM 17之后重构了runtime组件(libcxx、libcxxabi、libunwind等)的构建系统,不再支持直接进入libcxx或libcxxabi子目录单独执行CMake,必须从llvm-project根目录通过LLVM_ENABLE_RUNTIMES参数指定要构建的runtime组件,但默认会附带大量额外目标,需要通过参数过滤。

正确的CMake配置命令

从llvm-project根目录执行以下命令,仅构建libcxx、libcxxabi、libunwind,同时屏蔽多余的测试、基准等目标:

cmake -GNinja -S llvm-project -B build-libcxx \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_CXX_COMPILER=clang++ \
  -DCMAKE_C_COMPILER=clang \
  -DLLVM_ENABLE_RUNTIMES="libunwind;libcxxabi;libcxx" \
  # 仅专注构建runtime,屏蔽LLVM核心组件
  -DLLVM_BUILD_RUNTIME=ON \
  -DLLVM_BUILD_TOOLS=OFF \
  -DLLVM_BUILD_EXAMPLES=OFF \
  -DLLVM_BUILD_TESTS=OFF \
  -DLLVM_BUILD_BENCHMARKS=OFF \
  # libcxx相关配置
  -DLIBCXX_CXX_ABI=libcxxabi \
  -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${LLVM_FOLDER}/libcxxabi/include" \
  -DLIBCXX_CXX_ABI_LIBRARY_PATH="${BUILD_DIR}/lib" \
  -DLIBCXX_HAS_GCC_S_LIB=ON \
  -DLIBCXX_ENABLE_SHARED=ON \
  -DLIBCXX_ENABLE_FILESYSTEM=OFF \
  -DLIBCXX_INCLUDE_TESTS=OFF \
  -DLIBCXX_INCLUDE_BENCHMARKS=OFF \
  # libcxxabi相关配置
  -DLIBCXXABI_INCLUDE_TESTS=OFF \
  # libunwind相关配置
  -DLIBUNWIND_INCLUDE_TESTS=OFF

错误原因及修复

你之前的错误是直接在libcxx目录执行CMake并指定LLVM_ENABLE_RUNTIMES,不符合新版本构建逻辑,导致依赖目标(如cxx)无法被正确识别。必须切换到llvm-project根目录作为CMake源码路径(-S llvm-project),让构建系统正确解析runtime组件间的依赖关系。

减少构建目标的关键参数

以下参数可大幅降低生成的构建目标数量:

  • -DLLVM_BUILD_TOOLS=OFF:关闭LLVM工具链构建
  • -DLLVM_BUILD_TESTS=OFF:关闭所有测试目标
  • -DLIBCXX_INCLUDE_TESTS=OFF:关闭libcxx自身测试
  • -DLIBCXXABI_INCLUDE_TESTS=OFF:关闭libcxxabi自身测试
  • -DLIBUNWIND_INCLUDE_TESTS=OFF:关闭libunwind自身测试
  • -DLLVM_BUILD_BENCHMARKS=OFF:关闭基准测试目标

执行上述命令后,构建目标数量会大幅降低,接近旧版本规模,同时不会出现依赖缺失错误。

内容的提问来源于stack exchange,提问作者vwvw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:35:53