我目前正在为一个工作中的项目评估 C++ 包管理器,并且开始想知道为什么当 CMake 和远程 DVCS 服务器似乎可以很好地完成这个技巧时我需要它们。
在我的个人项目中,我使用ExternalProject来拉取和构建我拥有的任何依赖项。与此同时,Conan、vcpkg、hunter 和其他可能的人声称做同样的事情。
例如 vcpkg 似乎要求每个项目都有一个 .cmake 文件,以便它可以与 CMake find_package 一起使用。
那么,为什么要使用包管理器呢?
虽然ExternalProject_Add直接使用 CMake具有诸如完全匹配的编译标志等优点,但正确配置包并不总是微不足道的。此外,包管理器允许您在项目之间重用依赖源和二进制文件,从而大大降低存储需求。即使在像 vcpkg 这样从源代码构建的包管理器中也是如此,因为它们只下载一次源代码(并且每个配置构建一次以生成二进制文件)而不是每个构建文件夹(以及每个二进制文件的每个配置)下载一次。这些节省可能是巨大的,尤其是对于像 Qt 这样大小为几 GB 的依赖项。类似地,您也可以节省大量时间。
特尔;博士: