将多个目标组合成一个目标
Posted
技术标签:
【中文标题】将多个目标组合成一个目标【英文标题】:Grouping several targets into a single one 【发布时间】:2013-11-24 12:51:44 【问题描述】:假设我有一个目录结构如下的项目:
project
src
file1.cpp
file2.cpp
CMakeLists.txt
demos
demo1.cpp
demo2.cpp
CMakeLists.txt
CMakeLists.txt
在CMakeLists.txt
主文件中,我有以下几行:
add_subdirectory(src)
add_subdirectory(demos EXCLUDE_FROM_ALL)
据我了解,用于demos
目录的EXCLUDE_FROM_ALL
参数仅具有显式构建它的效果。也就是说,要同时构建目标demo1
和demo2
,我需要执行:
make demo1
make demo2
我的问题是:有没有办法将所有这些 demo1
和 demo2
目标组合成一个 demos
目标,然后输入:
make demos
在一个包含数十个演示的项目中,明确地构建每个演示非常烦人。
【问题讨论】:
【参考方案1】:如果我没记错的话,你可以去 demos (cd demos) 并在那里输入 make 来制作所有的 demo-targets。
【讨论】:
谢谢。我不知道这个。但是,我认为有一种方法可以键入make demos
而无需进入 demos
目录。这个项目tinyurl.com/mahay35 就是这样做的。见make demo
。【参考方案2】:
好的,找到了解决方案!我会在这里发布以防其他人需要这种行为。 唯一需要的是定义一个自定义目标,如下所示:
# Add target "demos" for building the demos
add_custom_target(demos
COMMAND $CMAKE_BUILD_TOOL
WORKING_DIRECTORY "$CMAKE_CURRENT_BINARY_DIR/demos")
【讨论】:
以上是关于将多个目标组合成一个目标的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS,如何将多个输入组合成一个 ng 模型?具体来说,将日期、时间和时区输入组合到 datetime 对象中