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

如何在执行make编译时自动触发CMake的install步骤?

CMake自动执行install的配置方法

解决思路

要实现cmake ..; make -j8一次完成编译+安装,关键是让CMake生成的Makefile默认目标(all)关联install目标,确保编译完成后自动触发安装流程。

可行配置方案

方案1:新增自动安装目标(推荐)

在CMakeLists.txt中添加以下代码:

add_custom_target(
    auto_install
    ALL
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target install
    DEPENDS ${PROJECT_NAME}
    COMMENT "Running install after build..."
)
  • ALL:将该目标加入默认构建流程,执行make时自动触发
  • DEPENDS ${PROJECT_NAME}:确保主项目编译完成后再执行安装
  • 用${CMAKE_COMMAND} --build调用install,兼容不同构建工具(比直接用make install更通用)

方案2:直接让默认目标依赖install

如果不想新增目标,可直接给默认的all目标添加依赖:

add_dependencies(all install)

注:CMake 3.23.1版本支持此写法,无需额外声明all目标。

之前尝试失败的原因

  • 第一个写法add_custom_target(default ...):CMake默认目标是all而非default,未指定CMAKE_DEFAULT_TARGET的话,这个自定义目标不会被默认执行
  • 第二个写法POST_BUILD命令:仅针对单个目标完成后执行,而install需要依赖所有构建产物,可能因依赖未完全就绪导致失败,且不符合CMake目标依赖的设计逻辑

验证

执行cmake ..生成Makefile后,运行make -j8,即可看到编译完成后自动执行install,同时生成project-targets.cmake文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:06:03