CMake标头生成器更新

时间:2011-10-01 23:47:13

标签: cmake

在CMake中,我目前有一个简单的Python脚本来生成标题,但如果我更新脚本本身,CMake将不会重新运行该脚本。有没有办法让CMake做到这一点?

1 个答案:

答案 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以重新生成文件。哪种可能,但你需要使用一些技巧来引入非标准的依赖。