我们的系统使用一些xml文件来生成一些代码。所以我创建了一个自定义命令来扫描和解析这些文件,并生成符合条件的内容。这就是我所做的:
file(GLOB BEAN_XML_FILES "../../*.xml")
add_custom_command(TARGET communication PRE_BUILD
COMMAND python
ARGS bean_maker.py --input-directory ${SOURCE_DIR}/docs/beans --output-directory ${SOURCE_DIR}/beans
WORKING_DIRECTORY ${SOURCE_DIR}/tools/bean_maker
COMMENT "Running bean maker..."
DEPENDS ${BEAN_XML_FILES})
问题是add_custom_command仅在我运行cmake时运行,即使我在文件夹中修改了一些xml。
如何在对文件进行更改时运行此操作?
答案 0 :(得分:0)
问题是您的自定义命令仅在需要编译目标时运行。每次修改其中一个xml文件时,都需要制作一个需要重新编译目标的CMake。
以下是两个选项:
答案 1 :(得分:0)
使用add_custom_command
签名添加自定义命令以生成输出文件。
add_custom_command(OUTPUT ${GENERATED_SOURCE_FILES}
COMMAND command1 [ARGS] [args1...]
DEPENDS ${BEAN_XML_FILES})
在构建时,如果生成的文件比它们所依赖的文件旧,则执行该命令。