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

Grouping several targets into a single one

本文关键字:目标 一个      更新时间:2023-10-16

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

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

在一个有几十个演示的项目中,显式地构建每个演示是非常烦人的。

如果我没记错,你可以转到demos(cd demos)并在那里键入make,使所有demo成为目标。

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

# Add target "demos" for building the demos
add_custom_target(demos
  COMMAND ${CMAKE_BUILD_TOOL}
  WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demos")
相关文章: