今天是个好日子。
我有以下情况:我有一个 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)
现在,发生了什么:第一次(即:创建构建目录,运行 cmake-gui,选择 Web 组件,配置,生成,制作)CMake 很好地执行了${ECPPC}
命令,即。它在二进制目录中生成所需的 CPP 文件,并将它们链接在一起。
过了一会儿,显然在我工作的时候,我修改了一个组件文件(例如images.ecpp
)并make
在构建目录中再次运行。但是现在,CMake 不会拾取ecpp
文件的更改。我必须去 cmake-gui,删除缓存,从零开始一切。这是非常令人厌烦和缓慢的。
所以,两个问题:
我可以告诉 CMake 跟踪它的变化并在它发生变化时
images.ecpp
调用它的编译器吗?${ECPPC}
我怎样才能
make clean
让它也删除生成的cpp
文件。
谢谢你的时间,f。