【问题标题】:How to generate cscope.files from CMakeLists.txt如何从 CMakeLists.txt 生成 cscope.files
【发布时间】:2013-03-02 15:10:14
【问题描述】:

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

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

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

还是已经有这样的选择了?

【问题讨论】:

    标签: c++ c cmake cscope


    【解决方案1】:

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

    【讨论】:

    • 不错 - 我不知道!我会(应该)使用execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ...)
    【解决方案2】:

    您可以在每次运行 CMake 时生成文件,方法是添加如下内容:(假设您当前的文件列表位于两个变量中,分别称为 SourceFilesHeaderFiles

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

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2017-12-15
      相关资源
      最近更新 更多