如何使用 CMake 安装依赖项?

问题描述

我一直在尝试找出处理 C++ 项目中依赖项的最佳方法。对于较小的库,例如 fmt添加以下内容并不太难:

include(FetchContent)
FetchContent_Declare(FormatLib
  GIT_REPOSITORY "https://github.com/..."
  GIT_TAG "..."
)
FetchContent_MakeAvailable(FormatLib)

但是,不希望每次都将项目下载到构建目录中,并且依赖较大,例如依赖其他东西的Vulkan Loader。 我想要的是能够在我的主项目的配置之前或配置时做一些事情,下载、配置、构建和安装一个库系统。我不知道这是否是 CMake 的一个功能,但任何帮助将不胜感激。

我也知道 ExternalProject 模块在 CMake 中已经存在很长时间了,并且非常适合我想要的东西,我想......如果我能够使用它来安装一个库before 然后我会在同一个 find_package

调用 CMakeLists.txt

我购买并阅读了大量的“Professional CMake 8th Edition”,但仍然不知道 CMake 中是否存在这样的功能或技术。

我应该澄清一下,我不需要 Vulkan 加载器,我只是举了一个例子。对于 Vulkan 加载程序,如果您已经安装了 SDK,则可以使用内置的 find_package 命令。我的问题是是否有办法预先填充这样的库。有些特定的库我无法使用 Conan 等包管理器找到,似乎最好的解决方案是直接从在线 git 存储库中提取代码,构建和安装。

总而言之,我希望能够做的是以下内容:编写一个 CMakeLists.txt,详细说明项目的所有依赖项,可能使用 find_package 搜索依赖项,如果它们是未找到,它会在系统范围内安装它们,以便从那时起,系统上所述项目或类似项目的每个构建都可以访问已安装的包。

对于我如何缓解这个问题,甚至我想要的开发策略如何有缺陷的任何建议、见解或建议,我们将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)