2010-11-16 137 views
0

我们的系统使用一些xml文件来生成一些代码。所以我创建了一个自定义命令来扫描和解析这些文件,并按照给定的内容生成东西。这是我做过什么:关于xml文件的add_custom_command

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

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

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

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

+0

工作过,谢谢! – scooterman 2010-11-17 20:34:24

0

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

这里有两种选择:

  1. 设置一个颓废总是在变化(系统时间,增加可变)
  2. 创建写出所有的XML文件的最新修改时间的第二个自定义命令您的构建目录中有一个文件。取决于那个文件,你应该只能在xml文件改变后看到你的目标重新编译。