1
在CMake中,我现在有一个简单的Python脚本来生成头文件,但如果我更新脚本本身,CMake不会重新运行脚本。有没有办法让我的CMake做到这一点?CMake头生成器更新
在CMake中,我现在有一个简单的Python脚本来生成头文件,但如果我更新脚本本身,CMake不会重新运行脚本。有没有办法让我的CMake做到这一点?CMake头生成器更新
看起来您是在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
将仅在编译时生成(当您运行make
或在IDE中执行构建命令时)。相反,如果您在cmake时间运行脚本(使用execute_process
命令),则必须重新运行cmake以重新生成文件。这是可能的,但你需要使用一些技巧来引入一个非标准的依赖关系。