【问题标题】:Running cscope from CMake at build time在构建时从 CMake 运行 cscope
【发布时间】:2016-09-27 04:42:47
【问题描述】:

我正在使用 Ubuntu Linux。

当我从我的项目目录运行“make”时,我一直在尝试运行以下 cscope 命令,因此它会重新编译 cscope 并在我创建项目时获取更新的名称信息。

cscope -b -q -U -R

根据我的研究和一些阅读,当您使用 CMakeLists.txt 中的 add_custom_command 函数执行“制作”时,我应该能够让 CMake 运行命令。

但是,它的许多尝试和变体都没有成功。是否可以使用add_custom_command 按我的意愿运行它?

只是这样做似乎不起作用:

add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cscope.in.out ${CMAKE_CURRENT_BINARY_DIR}/cscope.out ${CMAKE_CURRENT_BINARY_DIR}/cscope.po.out COMMAND cscope -b -q -U -R)

我也尝试过使用 add_custom_command 的 TARGET 重载,并创建一个依赖于 ALL 或项目主输出文件的自定义目标,但这也无济于事。

理想情况下,这将在项目建成后运行,如果能告诉我我做错了什么,或者如果这完全可以做到这一点,我将不胜感激?

【问题讨论】:

标签: linux cmake cmake-custom-command


【解决方案1】:

我也尝试过使用 add_custom_command 的 TARGET 重载,并创建一个依赖于 ALL 或项目主输出文件的自定义目标,但这也无济于事。

这似乎是问题所在 - 当 CMake 命令需要传递一个 target 时,它们引用您之前使用 add_executable、@ 中的任何一个创建的目标的名称987654324@ 或 add_custom_target,不一定映射到命令生成的实际工件文件。

这是我对这个问题的看法,它似乎在 build 目录中生成了三个 cscope 文件。

cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
project(te)

add_executable(main main.cpp asdf.cpp)
add_custom_command(TARGET main POST_BUILD COMMAND cscope -b -q -U -R)

请注意,这里的目标名称是我作为第一个参数传递给add_executable 命令的任何内容。

【讨论】:

  • 只要POST_BUILD 可以接受,这就是正确答案。否则,依赖于add_custom_commandOUTPUT 文件之一的目标将在构建之前触发该命令。
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 2018-05-09
  • 2016-10-18
相关资源
最近更新 更多