我正在使用Ubuntu Linux。
当我跑步时,我一直试图让以下cscope命令运行" make"从我的项目目录开始,所以当我创建项目时,它会重新编译cscope并获取更新的名称信息。
cscope -b -q -U -R
根据我的研究和一些阅读,当你做“制作”时,我应该能够让CMake运行一个命令。使用CMakeLists.txt中的add_custom_command
函数。
但是,它的许多尝试和变化都没有成功。是否可以使用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
或项目主输出文件的自定义目标,但是没有#&# 39;什么都不做。
理想情况下,这可以在项目建成后运行,如果可以告诉我我做错了什么,或者这是否完全可以做到这一点,我会感激不尽?
答案 0 :(得分:2)
我也试过使用
add_custom_command
的TARGET重载,并创建一个依赖于ALL
或项目主输出文件的自定义目标,但是没有#&# 39;什么都不做。
这似乎是问题 - 当CMake命令需要传递目标时,它们通过使用{{1}中的任何一个来引用您之前创建的目标的名称}},add_executable
或add_library
,它们不一定映射到命令生成的实际工件文件。
这是我对这个问题的看法,它似乎在构建目录中生成了三个cscope文件。
add_custom_target
请注意,此处的目标名称是我作为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)
命令的第一个参数传递的任何内容。