2

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

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

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

还是已经有这样的选择?

4

2 回答 2

3

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

于 2013-03-07T16:44:27.047 回答
2

您可以通过添加以下内容在每次运行 CMake 时生成文件:(这假设您当前的文件列表位于 2 个名为SourceFilesand的变量中HeaderFiles

set(AllFiles ${SourceFiles} ${HeaderFiles})
string(REPLACE ";" "\n" AllFiles "${AllFiles}")
file(WRITE ${CMAKE_BINARY_DIR}/cscope.files "${AllFiles}")
于 2013-03-02T15:39:45.010 回答