运行 构建时来自 CMake 的 cscope

Running cscope from CMake at build time

我正在使用 Ubuntu Linux。

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

cscope -b -q -U -R

根据我的研究和一些阅读,当你使用 [=37 中的 add_custom_command 函数执行 'make' 时,我应该能够让 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 或项目的主要输出文件的自定义目标,但这并没有也什么都不做。

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

I've tried using the TARGET overload of add_custom_command as well, and making a custom target with a dependency on either ALL or the main output file of the project, but that doesn't do anything either.

这似乎是问题所在 - 当 CMake 命令需要传递 target 时,它们指的是您之前使用以下任何方法创建的目标的名称add_executableadd_libraryadd_custom_target,不一定映射到命令生成的实际项目文件。

这是我对这个问题的看法,它似乎在构建目录中生成了三个 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 命令的任何内容。