0

我正在使用 Ubuntu Linux。

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

cscope -b -q -U -R

add_custom_command根据我的研究和一些阅读,当您使用CMakeLists.txt中的函数执行“制作”时,我应该能够让 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)

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

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

4

1 回答 1

3

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

这似乎是问题所在 - 当 CMake 命令需要传递一个target时,它们引用您之前通过使用或中的任何一个创建的目标的名称add_executable,这不一定映射到生成的实际工件文件由命令。add_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命令的任何内容。

于 2016-09-26T20:42:47.350 回答