0

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

当对文件进行更改时,我该如何运行?

4

2 回答 2

0

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

这里有两个选项:

  1. 设置一个始终在变化的颓废(系统时间,递增变量)
  2. 创建第二个自定义命令,将所有 xml 文件的最新修改时间写入构建目录中的文件。取决于该文件,您应该只在更改 xml 文件后才能看到目标重新编译。
于 2010-11-16T19:16:41.337 回答
0

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

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

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

于 2010-11-17T02:16:01.293 回答