将多个目标组合成一个目标

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 参数仅具有显式构建它的效果。也就是说,要同时构建目标demo1demo2,我需要执行:

make demo1
make demo2

我的问题是:有没有办法将所有这些 demo1demo2 目标组合成一个 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 对象中

将两个 RGB 图像组合成一个 6 通道图像 - openCV

将一个组组合成多个组而不重复

将多个字典组合成一个字典[重复]

将多个子查询组合成一个查询

如何将两个数组合并到字典中?