如何从CMakeLists.txt生成cscope.files

我正在使用CMake构建我的代码。 CMakeLists.txt包含所有.C或.CPP文件和所有包含目录的列表。

我如何实现CMakeLists.txt,以便我可以为我生成一个make选项,包含所有.C和.CPP(或.CXX)文件的列表以及include目录中的所有.h文件在里面?

例如,我应该能够运行make cscopefiles ,它将为我生成cscope.files。

或者已经有这样的选择吗?

您还可以使用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调用仅在结果与其当前内容不同时才更新输出文件。

您可以通过添加类似以下内容的方式在每次运行CMake时生成文件:(这假设您当前的文件列表位于2个变量中,称为SourceFilesHeaderFiles

 set(AllFiles ${SourceFiles} ${HeaderFiles}) string(REPLACE ";" "\n" AllFiles "${AllFiles}") file(WRITE ${CMAKE_BINARY_DIR}/cscope.files "${AllFiles}")