2010-11-16 138 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文件改變後看到你的目標重新編譯。