C++ 如何从CMakeLists.txt生成cscope.files

C++ 如何从CMakeLists.txt生成cscope.files,c++,c,cmake,cscope,C++,C,Cmake,Cscope,我正在使用CMake构建代码。CMakeLists.txt包含所有.C或.CPP文件以及所有包含目录的列表 我如何实现CMakeLists.txt,以便可以使用make选项为我生成cscope.files,其中包含所有.C和.CPP(或.CXX)文件的列表以及其中包含目录中的所有.h文件 例如,我应该能够运行生成cscopefiles,它将为我生成cscope.files 或者已经有这样的选项了?每次运行CMake时,您都可以通过添加以下内容来生成文件:(假设您当前的文件列表位于两个变量中,分别

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

我如何实现CMakeLists.txt,以便可以使用
make
选项为我生成cscope.files,其中包含所有.C和.CPP(或.CXX)文件的列表以及其中包含目录中的所有.h文件

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


或者已经有这样的选项了?

每次运行CMake时,您都可以通过添加以下内容来生成文件:(假设您当前的文件列表位于两个变量中,分别称为
SourceFiles
HeaderFiles

set(所有文件${SourceFiles}${HeaderFiles})
字符串(替换“\n”所有文件“${AllFiles}”)
文件(写入${CMAKE\u BINARY\u DIR}/cscope.files“${AllFiles}”)

您还可以通过一个configure\u 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调用只会更新输出文件。

Nice one-我不知道!我会(应该)使用
execute\u进程(COMMAND${CMAKE\u COMMAND}-E copy\u,如果不一样的话…