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以重新生成文件。這是可能的,但你需要使用一些技巧來引入一個非標準的依賴關係。