2012-05-29 19 views
0

我正在嘗試爲我正在進行的項目(v2.8.8)學習CMAKE。我正在嘗試將一個自定義命令添加到一組資源文件,這些文件從每個資源生成標題。然後我想補充的資源和產生的標頭source_groups在我的Visual Studio 2005項目add_custom_command後在source_group中添加了兩次文件

這是我到目前爲止有:

SET (MYAPP_RES_FILES 
    ${MYAPP_RES_DIR}/file.1 
    ${MYAPP_RES_DIR}/file.2 
    ${MYAPP_RES_DIR}/file.3 
) 

MACRO (MYTRANSFORM IN_FILES OUT_HEADERS) 
    FOREACH (I ${${IN_FILES}}) 
     GET_FILENAME_COMPONENT (IN_FILE ${I} ABSOLUTE) 
     GET_FILENAME_COMPONENT (OUT_HEADER ${I} NAME_WE) 
     SET (OUT_HEADER ${CMAKE_CURRENT_BINARY_DIR}/res/generated/gen_${OUT_HEADER}.h) 
     ADD_CUSTOM_COMMAND (OUTPUT ${OUT_HEADER} 
      MAIN_DEPENDENCY ${IN_FILE} 
      COMMAND ${MY_TOOL} -o ${OUT_HEADER} ${IN_FILE} 
     ) 
     SET(${OUT_HEADERS} ${${OUT_HEADERS}} ${OUT_HEADER}) 
    ENDFOREACH (I) 
ENDMACRO (MYTRANSFORM) 

SOURCE_GROUP ("res" FILES 
    ${MYAPP_RES_FILES} 
) 

MYTRANSFORM (MYAPP_RES_FILES MYAPP_RES_HEADER_FILES) 
SOURCE_GROUP ("res\\generated" FILES 
    ${MYAPP_RES_HEADER_FILES} 
) 

SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES}) 
SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_HEADER_FILES}) 

ADD_EXECUTABLE (${MYAPP_PROJECT_NAME} ${MYAPP_FILES}) 

它似乎工作,但每一個資源文件中加入兩倍到他們的source_group。一個沒有自定義命令,一個沒有。如果我刪除MAIN_DEPENDENCY ${IN_FILE}行,則僅添加每個資源文件中的一個,但它們沒有自定義命令。

任何幫助,將不勝感激

+0

祝您好運CMake。 – Puppy

回答

0

貌似有增加的資源文件的可執行程序及源組的問題。我放棄了SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES}),它修復了問題

相關問題