【发布时间】:2018-01-31 12:24:08
【问题描述】:
我正在学习 CMake 并努力学习:add_custom_command 函数。
如果这是一个基本问题,我很抱歉,但在线文档对我没有多大帮助。
对于这个sn-p:
add_executable (creator creator.cpp)
get_target_property (creator EXE_LOC LOCATION) # get creator.cpp location
add_custom_command(
OUTPUT ./created.cpp # creates 'created.cpp' at the specified path
DEPENDS creator # specifies files on which the command depends
COMMAND ${EXE_LOC} # executes this command
ARGS ./created.cpp
)
add_executable(FOO ./created.c)
我可以直观地意识到那里发生了什么,但是,我不明白为什么需要 add_custom_command 正文中的每条指令。这是我的理解(请纠正我的错误):
- 使用 creator.cpp 在当前工作目录中创建可执行创建者
-
EXE_LOC变量用于存放创建的可执行文件的路径 -
add_custom_command:-
OUTPUT指定将在当前创建一个created.cpp文件 工作目录。 -
DEPENDS:指定这个新创建的 .cpp 文件依赖于 以前创建的可执行文件。但是为什么我们需要指定这个呢?是吗 必须这样做,如果不是,如果我不指定会发生什么 -
COMMAND: ${EXE_LOC}: 这个我不明白。我假设当脚本 到达这一点,将执行某种命令。但究竟要在这里执行什么?./creator也许?该文档指定:如果 COMMAND 指定一个可执行目标(由 ADD_EXECUTABLE 创建),它将自动替换为构建时创建的可执行文件的位置。
-
但我真的不明白。
-
ARGS:我不明白这应该做什么以及我们为什么需要它。 我们将新创建的文件作为参数传递给旨在创建该特定文件的命令,这真的让我感到困惑。 如果可能,请帮我清除。
感谢您阅读我的长文。
【问题讨论】: