控制使用CMake add_subdirectory()

时间:2018-07-04 00:49:31

标签: cmake

我在add_subdirectory()方面遇到问题,即我无法控制实际上使用它构建的目标-似乎只相当于make all。我可能会滥用add_subdirectory(),但据我了解,它可用于建立依赖关系。我正在供应项目所依赖的一些库,并且在项目的CMakeLists.txt中,为每个供应商的项目添加了add_subdirectory()(它们都有自己的CMakeLists.txt)。

因为我正在交叉编译,所以我不想构建这些库使用的任何二进制文件。在一种情况下,我还需要另一个不是由ALL目标在一个依赖项中构建的目标。据我所知,add_subdirectory()无法实现这一点。有什么办法可以做到这一点我想念吗?有更好的CMake命令代替吗?

我以前通过仅对具有我感兴趣的目标的每个依赖项调用cmake / make来与shell脚本一起工作,但是我试图将其移入仅支持通过CMake调用的Android Studio。

编辑:这很麻烦,但是我正在考虑使用add_custom_target手动调用cmakecmake --build,以便像以前一样精确地控制构建。

1 个答案:

答案 0 :(得分:0)

命令add_subdirectory支持选项EXCLUDE_FROM_ALL,该选项可防止在子目录中创建的目标包含在父目录的ALL目标中。然后,仅要构建所需的供应商目标,请为您自己的项目目标添加目标级别的依存关系。