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

如何在CMake全组件安装规则中排除Boost依赖项

解决方案

要排除Boost的安装规则,核心是阻止Boost自身的CMake配置生成install指令,以下是具体实现方式:

方法一:通过FetchContent传递参数禁用Boost安装规则

修改FetchContent_Declare部分,添加CMAKE_ARGS参数,告诉Boost的构建系统跳过安装步骤:

cmake_minimum_required(VERSION 3.26)
project(subway LANGUAGES CXX)

include(FetchContent)
FetchContent_Declare(
  boost
  URL https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.gz # 替换为你实际的Boost来源
  CMAKE_ARGS
    -DBOOST_SKIP_INSTALL=ON  # 禁用Boost的安装规则
    -DBOOST_ALL_NO_LIB=OFF   # 保持Boost库的自动链接(按需调整)
)
FetchContent_MakeAvailable(boost)

add_library(heavy-rail heavy-rail.cpp)
install(TARGETS heavy-rail COMPONENT heavy-rail)

add_library(bus bus.cpp)
install(TARGETS bus COMPONENT bus)
  • BOOST_SKIP_INSTALL是Boost CMake配置提供的官方变量,设置为ON会直接跳过所有安装规则的生成。
  • 这个方法从根源上避免Boost的安装规则被写入cmake_install.cmake,自然满足无论指定哪个组件都排除Boost安装规则的需求。

方法二:使用CMake内置变量跳过安装规则(兼容旧版Boost)

如果你的Boost版本不支持BOOST_SKIP_INSTALL,可以传递CMake内置的CMAKE_SKIP_INSTALL_RULES变量给Boost的配置过程:

FetchContent_Declare(
  boost
  URL ... # 填写你的Boost来源
  CMAKE_ARGS
    -DCMAKE_SKIP_INSTALL_RULES=ON
)

这个变量会让Boost的CMake脚本中所有install指令失效,同样不会在主项目的cmake_install.cmake中生成Boost的安装内容。

验证效果

配置并生成项目后,查看cmake_install.cmake文件,里面只会包含heavy-rail和bus两个组件的安装规则,Boost相关的安装代码会完全消失;无论执行cmake --install . --component heavy-rail还是其他组件安装命令,都不会触发Boost的安装操作。

内容的提问来源于stack exchange,提问作者Luka Govedič

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:12:39