在xml文件上添加add_custom_command

时间:2010-11-16 16:10:32

标签: cmake

我们的系统使用一些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。

如何在对文件进行更改时运行此操作?

2 个答案:

答案 0 :(得分:0)

问题是您的自定义命令仅在需要编译目标时运行。每次修改其中一个xml文件时,都需要制作一个需要重新编译目标的CMake。

以下是两个选项:

  1. 设置始终在变化的延迟(系统时间,递增变量)
  2. 创建第二个自定义命令,将所有xml文件的最新修改时间写入构建目录中的文件。依赖于该文件,您应该只在xml文件更改后才能看到目标重新编译。

答案 1 :(得分:0)

使用add_custom_command签名添加自定义命令以生成输出文件。

add_custom_command(OUTPUT ${GENERATED_SOURCE_FILES}
                   COMMAND command1 [ARGS] [args1...]
                   DEPENDS ${BEAN_XML_FILES})

在构建时,如果生成的文件比它们所依赖的文件旧,则执行该命令。