编辑:我的问题针对的是早期配置阶段,其中CMake输入文件仍在被解析,因此必须在调用include()
之前出现。所以答案在这里找到:Force CMake to generate configure_file target every build not 解决了我的问题,因为它在 include()
语句被解释后生成文件。
我有CMakeLists.txt
包含在 configure 阶段生成的文件:
execute_process(COMMAND "my-generator -o generated.cmake")
include(generated.cmake)
除了这种方法感觉不对(不说优雅)之外,我现在需要在每次构建之前重新生成该文件 (my-generator
生成包含的输出当前时间)。
我的假设是我无法使用add_custom_command()
或add_custom_target()
,因为该文件将在编译时生成,但在配置步骤中需要。
This非常古老的帖子向touch
建议输入文件,所以我这样做了:
execute_process(
COMMAND "my-generator -o generated.cmake"
COMMAND cmake -E touch "${CMAKE_CURRENT_LIST_FILE}")
..这不会产生错误,但多次调用make
将不会多次运行配置步骤。
我做错了什么?有更好的方法吗?