CMake:将子目录添加到自定义目标并将自定义目标添加到VS解决方案

时间:2013-07-20 18:57:53

标签: cmake

使用CMake,我正在努力:

  1. 我需要一个自定义构建目标(我知道,我可以使用custom_target创建它),但我希望它能够添加到visual studio解决方案中。现在,当我创建自定义目标时,我在文件夹中看到了项目文件,但是当我在VS IDE中打开VS解决方案时,它未在VS解决方案中显示/添加。

  2. 我需要将子目录(其中包含CMakeLists.txt)添加到自定义目标,以便将这些项目添加到自定义目标中,并且在构建自定义目标时,这些项目将进行构建。

  3. 基本上是另一个构建线,如ALL_BUILD。构建ALL_BUILD时,只有添加到其中的项目(子目录)才会构建。构建自定义目标时,只有添加到自定义目标的项目(子目录)才会构建。

    有可能做这样的事吗?

    非常感谢你的时间和帮助!

    - RC

1 个答案:

答案 0 :(得分:1)

您应该可以使用add_custom_targetadd_dependencies来完成此操作。

假设您有以下目录结构:

root
  |--CMakeLists.txt
  |--main.cc
  |
  |--one
  |   |--CMakeLists.txt
  |   |--main_one.cc
  |
  |--two
      |--CMakeLists.txt
      |--main_two.cc

假设您希望子目录“one”和“two”作为ALL_BUILD中未包含的目标,则以下内容应该有效:

顶级CMakeLists.txt:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(test)

add_executable(primary main.cc)

add_subdirectory(one)
add_subdirectory(two)

add_custom_target(SecondaryAllBuild)
add_dependencies(SecondaryAllBuild one two)
“root / one”中的CMakeLists.txt(对于“root / two”中的CMakeLists.txt,将“one”换成“two”):

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(secondary_one)
add_executable(one EXCLUDE_FROM_ALL main_one.cc)