使用CMake FetchContent自动下载依赖项目
保持工程结构干净规整的同时尽可能的支持CI/CD自动化。
假设你有一个C++项目名字为Project,它依赖一个预先编译好的第三方库 libx。这个库包含一个动态链接文件 libx.so
以及对应的头文件 x.h
。为了保证项目能够正常编译,可行的做法是使用Git跟踪 libx.so
与 x.h
。但是,这样做会使代码库变得臃肿,尤其是动态库文件多次更新后。
对于这种外部依赖二进制文件,可以考虑将其托管在固定位置,然后使用CMake的FetchContent功能在构建时自动下载并放置在指定目录。以下是具体做法。