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

CMake中如何仅在文件不存在时执行configure_file?

解决configure_file仅在目标文件不存在时生成的问题

CMake自带的configure_file默认会在每次构建时检查源模板文件的变化,自动更新目标文件——哪怕用户已经手动修改过目标文件,这显然不符合你的需求。要实现仅当目标文件不存在时才生成,存在则完全不触碰的效果,可以用条件判断结合configure_file来实现:

  • 在你的CMakeLists.txt里加入以下逻辑:
# 先定义源模板文件和目标文件的路径
set(SOURCE_TEMPLATE "${CMAKE_SOURCE_DIR}/your_template.h.in")
set(TARGET_FILE "${CMAKE_BINARY_DIR}/your_target.h")

# 只有目标文件不存在时,才执行生成操作
if(NOT EXISTS "${TARGET_FILE}")
    configure_file("${SOURCE_TEMPLATE}" "${TARGET_FILE}" @ONLY)
endif()

逻辑说明

if(NOT EXISTS "${TARGET_FILE}")会先检查目标文件的存在性:

  • 如果目标文件还没创建,就调用configure_file从模板生成它;
  • 如果目标文件已经存在(不管是之前生成的还是用户手动修改的),直接跳过生成步骤,完全保留现有文件内容。

如果之后需要重新生成目标文件,只需要手动删除已存在的目标文件,再重新运行CMake构建即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:54:51