2

使用 CMake,我正在尝试这样做:

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

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

基本上是另一行构建,例如 ALL_BUILD。当 ALL_BUILD 被构建时,只有添加到它的项目(子目录)才会被构建。当自定义目标被构建时,只有添加到自定义目标的项目(子目录)才会被构建。

有可能做这样的事情吗?

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

--RC

4

1 回答 1

3

您应该能够使用add_custom_targetand来做到这一点add_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)
于 2013-07-20T20:39:20.043 回答