在CMake中,我目前有一个简单的Python脚本来生成标题,但如果我更新脚本本身,CMake将不会重新运行该脚本。有没有办法让CMake做到这一点?
答案 0 :(得分:2)
在运行cmake时,您似乎正在直接调用代码生成脚本。虽然它是可能的解决方案,但它绝对不是使用cmake代码生成器的正确方法。
我建议您在案件中使用add_custom_command
:
add_custom_command(
OUTPUT generated.h
COMMAND ${PYTHON_EXECUTABLE} generator.py
DEPENDS generator.py
)
接下来,您可以简单地将标头放入传递给add_library
/ add_executable
命令的源文件列表中。 cmake将自动跟踪所有依赖项并调用您的脚本。
术语DEPENDS generator.py
通知cmake,如果更改了脚本,它应该重新生成标题。
使用此方法,文件generated.h
将仅在构建时生成(当您在IDE中运行make
或执行构建命令时)。相反,如果您在cmake时运行脚本(使用execute_process
命令),则必须重新运行cmake以重新生成文件。哪种可能,但你需要使用一些技巧来引入非标准的依赖。