我有一个现有的代码库,其中添加了许多第三方依赖项作为Git子模块,它们的目录直接在CMakeLists.txt中引用,就像在include_directories(../external/foo)
中一样。
一些依赖项是大型项目,例如FFmpeg,我宁愿仅使用通过软件包管理器安装到系统中的版本。但是,代码库的维护者希望能够继续使用树内依赖项。
我认为一个折衷方案是将CMake配置为允许两者都使用安装的软件包或使用树内子模块。我认为find_package
可用于查找已安装的程序包,但是有没有一种很好的方法来实现这种不太hacky的行为?
答案 0 :(得分:0)
您可以在cmake文件中添加一个选项,允许用户在内部FFMpeg或系统FFMpeg之间切换。选项(INTREE_FFMPEG“使用intree ffmpeg”打开)。该选项可以通过cmake-gui设置,也可以通过命令行开关设置。