我试图在我的源代码树中包括几个第三方库,并对其构建系统进行最小的更改,以便于升级。他们和我一样都使用CMake,因此我可以在自己的CMakeLists.txt中使用add_subdirectory(extern/foo)
libfoo。
但是foo CMakeLists.txt编译了一个测试工具,建立了文档,一个不需要的共享库,等等。libfoo作者具有预见性,可以通过选项(option(FOO_BUILD_SHARED "Build libfoo shared library" ON)
例如)来控制它们,这意味着我可以通过CMake命令行进行设置。但是我想默认关闭它,并且可以通过命令行覆盖。
我以前尝试set(FOO_BUILD_SHARED OFF)
过add_subdirectory(extern/foo)
。这样的效果是,在第二次及以后的构建尝试中不尝试构建共享库,而在第一次构建时则不尝试,这是我真正需要加快的速度。
这可能吗,或者我需要为这些项目维护分叉的CMakeLists.txt吗?