我在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
手动调用cmake
和cmake --build
,以便像以前一样精确地控制构建。
答案 0 :(得分:0)
命令add_subdirectory支持选项EXCLUDE_FROM_ALL
,该选项可防止在子目录中创建的目标包含在父目录的ALL
目标中。然后,仅要构建所需的供应商目标,请为您自己的项目目标添加目标级别的依存关系。