我有一個可執行文件,一些插件和一些生成的JSON的Web界面的大項目。CMake - 複製/合併具有依賴關係的文件更改檢查
因此,在我編寫的可執行文件和.so的插件,我做以下操作:
- 合併所有.js文件成一個大
- 編譯「發電機」(設置宏和printfs輸出來形容在C++代碼中的一些結構)
- 運行發電機和生成JSON文件(與一些的sed和jshon)處理
- 在安裝階段,以及複製所有的這一點,所以我其他文件到目標目錄(如果不存在,應該創建它)。
但是我不知道,如何使用CMake來進行正確的依賴關係和日期時間檢查。其實,第一步是用:
FILE(GLOB WEB_INPUT_JS *.js)
FILE(WRITE scripts.js.tmp "")
FOREACH(SCRIPTFILE ${WEB_INPUT_JS})
FILE(READ ${SCRIPTFILE} CONTENTS)
FILE(APPEND scripts.js.tmp "${CONTENTS}")
ENDFOREACH()
CONFIGURE_FILE(scripts.js.tmp ${WEB_BUILD_PATH}/scripts.js COPYONLY)
但是這不會在makefile中創建依賴關係。我想重新運行這段「代碼」,其中一些${WEB_INPUT_JS}
文件已被更改或${WEB_BUILD_PATH}/scripts.js
已被刪除。
第三步是用一系列的
add_custom_command(TARGET gen_somedata POST_BUILD COMMAND gen_somedata | sed ${JSON_SED} | jshon > ${JSON_BUILD_PATH}/somedata.json)
install (FILES ${JSON_BUILD_PATH}/somedata.json ......nextfiles.... DESTINATION ${JSON_OUTPUT_PATH})
取得如何做到這一點?非常感謝您的答案!