如何禁用CMake生成的构建文件自动触发重新配置的行为
禁用CMake生成Makefile的自动重配置方法
CMake默认生成的Makefile会在构建前检查CMakeLists.txt、*.cmake等配置文件的变更,一旦发现改动就自动重跑cmake更新配置。如果你的初始cmake命令是通过封装脚本执行的,脚本注入了特殊运行环境,自动重配时无法获取这些环境就会出错,就可以用下面的方案禁用该行为。
方案1:生成Makefile时永久禁用
首次执行cmake生成构建文件时,额外传入CMAKE_SUPPRESS_REGENERATION参数即可:
cmake <你原来的cmake参数> -DCMAKE_SUPPRESS_REGENERATION=ON
该参数会直接从生成的Makefile中移除所有触发cmake自动重运行的规则,后续所有make操作都不会再自动触发cmake配置,完全需要你手动执行封装脚本来更新CMake配置。
方案2:单次构建临时禁用
如果你已经生成过Makefile,不想重新生成,只需要本次make跳过自动重配置检查,可以直接在执行make时传入重配置禁用参数:
make <你的构建目标> CMAKE_SUPPRESS_REGENERATION=ON
该方案只对当前执行的make命令生效,后续执行make还是会走默认的自动重配置逻辑。
注意:禁用自动重配置后,如果你修改了CMakeLists.txt、编译选项、依赖配置等CMake相关内容,必须手动重新运行你原来的封装脚本执行cmake,否则配置变更不会生效,构建会沿用旧的配置结果。
内容的提问来源于stack exchange,提问作者BeeOnRope
相关产品推荐
相关产品推荐

