可选的树内构建依赖关系

时间:2018-07-05 06:24:43

标签: cmake git-submodules

我有一个现有的代码库,其中添加了许多第三方依赖项作为Git子模块,它们的目录直接在CMakeLists.txt中引用,就像在include_directories(../external/foo)中一样。

一些依赖项是大型项目,例如FFmpeg,我宁愿仅使用通过软件包管理器安装到系统中的版本。但是,代码库的维护者希望能够继续使用树内依赖项。

我认为一个折衷方案是将CMake配置为允许两者都使用安装的软件包或使用树内子模块。我认为find_package可用于查找已安装的程序包,但是有没有一种很好的方法来实现这种不太hacky的行为?

1 个答案:

答案 0 :(得分:0)

您可以在cmake文件中添加一个选项,允许用户在内部FFMpeg或系统FFMpeg之间切换。选项(INTREE_FFMPEG“使用intree ffmpeg”打开)。该选项可以通过cmake-gui设置,也可以通过命令行开关设置。