可选的add_sub目录(如find_package)

时间:2018-08-24 07:36:05

标签: cmake git-submodules

在一个项目中,我有一个外部依赖项(一个库)。这是可选的,但不太可能已经在系统上,并且可能会发生很大变化

所以我所做的就是find_package库,如果找不到该库(包括特定版本),我从Github下载它,并在其上调用add_subdirectory(下载可以确保该版本是正确的)

但是,由于未满足该库的依赖性而导致整个构建失败,这可能会失败。

有没有办法尝试包含子目录并在没有构建失败的情况下捕获失败?

注意:故障来自子模块中的find_package(...REQUIRED)

1 个答案:

答案 0 :(得分:1)

您可以修改子包的CMakeLists.txt来检查它是否作为另一个项目的一部分而构建,然后优雅地处理其未满足的依赖项。

要检查使用情况

if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
  # standalone build
else()
  # build as subdirectory of main project
endif()

要早日返回,请尝试return()

如果您无法更改子包,我看到的唯一方法是在主CMakeLists.txt中检查其所有依赖项,并且只有在满足所有依赖项后,才调用add_subdirectory()