在构建时从CMake运行cscope

时间:2016-09-26 19:13:50

标签: linux cmake add-custom-command

我正在使用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;什么都不做。

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

1 个答案:

答案 0 :(得分:2)

  

我也试过使用add_custom_command的TARGET重载,并创建一个依赖于ALL或项目主输出文件的自定义目标,但是没有#&# 39;什么都不做。

这似乎是问题 - 当CMake命令需要传递目标时,它们通过使用{{1}中的任何一个来引用您之前创建的目标的名称}},add_executableadd_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) 命令的第一个参数传递的任何内容。