与生成的文件相关的CMake
大家好 我有以下情况:我有一个CMake文件,它应该用来编译我的应用程序,它包括:与生成的文件相关的CMake,cmake,dynamically-generated,tntnet,Cmake,Dynamically Generated,Tntnet,大家好 我有以下情况:我有一个CMake文件,它应该用来编译我的应用程序,它包括: 一个或多个cpp文件 一些模板文件(ecpp),依次生成cpp文件,并编译到应用程序中(它们列在下面的WEB\u组件中,因此每个组件都有相关的.ecpp文件和将从中生成的.cpp) 这里是CMakeLists.txt(简化) 现在,发生了什么:第一次(即:生成构建目录,运行cmake gui,选择web组件,配置,生成,生成)cmake很好地执行${ECPPC}命令,即在二进制目录中生成所需的CPP文件,并将它们
cpp
文件ecpp
),依次生成cpp
文件,并编译到应用程序中(它们列在下面的WEB\u组件
中,因此每个组件都有相关的.ecpp
文件和将从中生成的.cpp
)${ECPPC}
命令,即在二进制目录中生成所需的CPP文件,并将它们链接在一起
过了一段时间,显然是在我工作的时候,我修改了一个组件文件(比如images.ecpp
),并在build目录中再次运行make
。但是现在,CMake无法获取ecpp
文件的更改。我必须去CMAKEGUI,删除缓存,从零开始重新启动所有东西。这是非常令人厌烦和缓慢的
因此,有两个问题:
images.ecpp
的更改,如果更改,调用${ECPPC}
编译器吗make clean
,以便它同时删除生成的cpp
文件感谢您抽出时间,f.而不是
执行流程()
您想使用添加自定义命令()
。请看这里:
基本上是告诉CMake
输出(生成的文件名)、命令和依赖(文件名).ecpp)。这使得它了解如何将源转换为必需的C++生成文件。然后,将生成的文件添加到某个目标,例如add_executable()
,或添加到add_custom_命令()
依赖项(如果不需要编译,您可能更需要它)。非常好。只是为了共享命令:add_custom_command(OUTPUT${CMAKE_CURRENT_BINARY_DIR}/${comp}.cpp command${ECPPC}-o${CMAKE_CURRENT_BINARY_DIR}/${comp comp}.cpp-v-n${comp comp}${CMAKE_CURRENT_SOURCE DIR}/${comp
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)