美好的一天大家。CMake與關於生成的文件
我有以下情況:我有一個CMake的文件中,這是爲了編譯我的應用程序,其中包括:
- 一個或多個
cpp
文件 - 一些模板文件(
ecpp
),其然後生成cpp
文件,這些文件被編譯到應用程序中(它們在下面的WEB_COMPONENTS
中列出,因此對於每個組件都有關聯的.ecpp
文件和將由其生成的.cpp
)。
這裏是的CMakeLists.txt(簡體)
cmake_minimum_required (VERSION 2.6)
set (PROJECT sinfonifry)
set (ECPPC /usr/local/bin/ecppc)
set (WEB_COMPONENTS
images
menu
css
)
set(${PROJECT}_SOURCES
""
CACHE INTERNAL ${PROJECT}_SOURCES
)
foreach(comp ${WEB_COMPONENTS})
list(APPEND ${PROJECT}_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${comp}.cpp)
execute_process(COMMAND ${ECPPC} -o ${CMAKE_CURRENT_BINARY_DIR}/${comp}.cpp -v
${CMAKE_CURRENT_SOURCE_DIR}/${comp}.ecpp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_QUIET
)
endforeach()
list(APPEND ${PROJECT}_SOURCES main.cpp)
add_executable(${PROJECT}_exe ${${PROJECT}_SOURCES})
target_link_libraries(${PROJECT}_exe cxxtools dl tntnet tntdb)
現在,會發生什麼情況:在第一次(即:使build目錄,運行cmake的桂中,選擇Web組件,配置,生成,製作)CMake很好地執行${ECPPC}
命令,即。它會在二進制目錄中生成所需的CPP文件,並將它們鏈接在一起。
過了一段時間,顯然在工作時,我修改了其中一個組件文件(例如images.ecpp
),並在build目錄中再次運行make
。但是現在,CMake並沒有拿起ecpp
文件的變化。我必須去cmake-gui,刪除緩存,從零開始重新開始。這非常煩人而且緩慢。
於是,兩個問題:
C和我告訴CMake的跟蹤
images.ecpp
的變化,並調用${ECPPC}
編譯器就可以了,如果它改變了嗎?我該如何才能
make clean
這樣它也會刪除生成的cpp
文件。
謝謝你的時間,f。
非常好。只需共享命令:'add_custom_command(OUTPUT $ {CMAKE_CURRENT_BINARY_DIR}/$ {comp} .cpp COMMAND $ {ECPPC} -o $ {CMAKE_CURRENT_BINARY_DIR}/$ {comp} .cpp -v -n $ {comp} $ { CMAKE_CURRENT_SOURCE_DIR}/$ {comp} .ecpp DEPENDS $ {CMAKE_CURRENT_SOURCE_DIR}/$ {comp} .ecpp)' – fritzone 2013-04-25 06:13:45