使用CMake,我正在努力:
我需要一个自定义构建目标(我知道,我可以使用custom_target创建它),但我希望它能够添加到visual studio解决方案中。现在,当我创建自定义目标时,我在文件夹中看到了项目文件,但是当我在VS IDE中打开VS解决方案时,它未在VS解决方案中显示/添加。
我需要将子目录(其中包含CMakeLists.txt)添加到自定义目标,以便将这些项目添加到自定义目标中,并且在构建自定义目标时,这些项目将进行构建。
基本上是另一个构建线,如ALL_BUILD。构建ALL_BUILD时,只有添加到其中的项目(子目录)才会构建。构建自定义目标时,只有添加到自定义目标的项目(子目录)才会构建。
有可能做这样的事吗?
非常感谢你的时间和帮助!
- RC
答案 0 :(得分:1)
您应该可以使用add_custom_target
和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)
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(secondary_one)
add_executable(one EXCLUDE_FROM_ALL main_one.cc)