我正在寻找一种让CMake每次检测到特定目标/可执行文件的依赖关系发生变化时重新运行shell命令的方法。我尝试添加一个自定义命令,它依赖于一个目标,但这似乎没有做到这一点。
我认为可行的例子:
ADD_CUSTOM_COMMAND(
OUTPUT temp
DEPENDS my_Target
COMMAND ./some_command.sh)
在检测到目标的依赖项更改时,可能能够运行命令的命令的任何建议。如果我们可以检查特定文件的更改,甚至更好。
答案 0 :(得分:0)
根据您的描述,听起来您可能想要这样:
cmake_minimum_required(VERSION 2.8)
project(cmaketest)
add_custom_command(OUTPUT some_file.cpp
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bar.cpp
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/bar.cpp
${CMAKE_CURRENT_BINARY_DIR}/some_file.cpp
VERBATIM
)
add_executable(mn main.cpp some_file.cpp)
将输出文件放在目标的源列表中,这取决于它。
答案 1 :(得分:-3)
add_custom_command()
使用OUTPUT
文件存在的简单检查来确定是否应该运行该命令。如果它不存在,则CMake执行make my_Target
,然后才运行您的命令。同时,如果存在OUTPUT
,则CMake根本不会运行任何内容。
要实现您的目标,您需要add_custom_target()
(可能使用ALL
关键字与make
一起运行)并实施检查some_command.sh
内的更改。