我正在使用CMake构建我的代码。 CMakeLists.txt包含所有.C或.CPP文件和所有包含目录的列表。
如何实现CMakeLists.txt以便我可以拥有一个make
选项,为我生成包含所有.C和.CPP(或.CXX)文件列表的cscope.files以及所有文件来自其中包含目录的.h文件?
例如我应该可以运行make cscopefiles
,它会为我生成cscope.files。
或者已经有这样的选择吗?
答案 0 :(得分:3)
您还可以使用configure_file调用扩展Fraser的答案,因此最终文件仅在其内容发生更改时才会更改。
file(WRITE
${CMAKE_BINARY_DIR}/cscope.files.in
"${AllFiles}")
configure_file(
${CMAKE_BINARY_DIR}/cscope.files.in
${CMAKE_BINARY_DIR}/cscope.files
COPYONLY)
如果其他东西(自定义命令)依赖于cscope.files输出文件,那么这可以帮助最小化增量重建。 configure_file调用仅在结果与其当前内容不同时才更新输出文件。
答案 1 :(得分:2)
每次运行CMake时都可以通过添加以下内容生成文件:(这假设您当前的文件列表位于2个变量中,分别称为SourceFiles
和HeaderFiles
)
set(AllFiles ${SourceFiles} ${HeaderFiles})
string(REPLACE ";" "\n" AllFiles "${AllFiles}")
file(WRITE ${CMAKE_BINARY_DIR}/cscope.files "${AllFiles}")