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

如何仅为特定COMPONENT硬编码CMAKE_INSTALL_PREFIX?

针对特定CMake安装组件自定义CMAKE_INSTALL_PREFIX的解决方案

可以实现仅为指定安装组件设置独立的CMAKE_INSTALL_PREFIX,无需重复修改全局配置。核心思路是在自定义的install-python目标中,通过命令行参数临时覆盖CMAKE_INSTALL_PREFIX的值,具体修改如下:

add_library(foo SHARED foo.cpp)

# 为python组件设置安装规则
install(
  TARGETS foo
  DESTINATION .
  COMPONENT python)

# 自定义install-python目标,传递特定的安装前缀
add_custom_target(
  install-python
  DEPENDS foo
  COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=python 
          -DCMAKE_INSTALL_PREFIX="${CMAKE_BINARY_DIR}/python"
          -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")

原理说明

  • cmake_install.cmake脚本会优先读取命令行传入的CMAKE_INSTALL_PREFIX参数,优先级高于CMakeLists.txt中的全局设置
  • 执行make install-python时,会将foo安装到${CMAKE_BINARY_DIR}/python路径下,同时保留install指令处理RPATH的特性——仅保留目标属性INSTALL_RPATH指定的LC_RPATH
  • 执行make install时,依然使用默认的CMAKE_INSTALL_PREFIX完成常规安装流程

执行流程

  1. 执行cmake ..完成初始配置
  2. 执行make install-python将python组件安装到指定路径
  3. 执行make install完成其他组件的默认路径安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:16