我正在使用 CMake 来构建我的代码。CMakeLists.txt 包含所有 .C 或 .CPP 文件和所有包含目录的列表。
如何实现 CMakeLists.txt 以便我可以有一个make
选项为我生成 cscope.files,其中包含所有 .C 和 .CPP(或 .CXX)文件的列表以及包含目录中的所有 .h 文件它?
例如,我应该能够运行make cscopefiles
,它会为我生成 cscope.files。
还是已经有这样的选择?
您还可以通过 configure_file 调用扩展弗雷泽的答案,因此最终文件仅在其内容更改时才会更改。
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 调用只会更新输出文件。
您可以通过添加以下内容在每次运行 CMake 时生成文件:(这假设您当前的文件列表位于 2 个名为SourceFiles
and的变量中HeaderFiles
)
set(AllFiles ${SourceFiles} ${HeaderFiles})
string(REPLACE ";" "\n" AllFiles "${AllFiles}")
file(WRITE ${CMAKE_BINARY_DIR}/cscope.files "${AllFiles}")