我有一个可执行文件,一些插件和一些生成的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})
取得如何做到这一点?非常感谢您的答案!