将多个目标分组为一个目标

时间:2013-11-24 12:51:45

标签: c++ makefile cmake

假设我有一个具有以下目录结构的项目:

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)

据我所知,用于EXCLUDE_FROM_ALL目录的demos参数具有仅显式构建它的效果。也就是说,要构建目标demo1demo2,我需要执行:

make demo1
make demo2

我的问题是:有没有办法将所有这些demo1demo2目标组合到一个demos目标中,然后输入:

make demos

在一个包含数十个演示的项目中,明确构建每个演示都非常烦人。

2 个答案:

答案 0 :(得分:1)

如果我没记错的话,你可以去演示(cd演示)并输入make来制作所有演示目标。

答案 1 :(得分:1)

好的,找到了解决方案!我会在这里发帖以防其他人需要这样的行为。 唯一需要的是定义自定义目标如下:

# Add target "demos" for building the demos
add_custom_target(demos
  COMMAND ${CMAKE_BUILD_TOOL}
  WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demos")