cmake——引入外部项目之FetchContent
在cmake3.11以及以上的版本,cmake又为我们提供了一种Configure过程引入外部项目的方法--FetchContent。
使用FetchContent的步骤总结起来就是:
- 使用FetchContent_Declare(MyName) 获取项目。可以是一个URL也可以是一个Git仓库。
- 使用FetchContent_GetProperties(MyName) 获取我们需要的变量MyName_*。
- 使用add_subdirectory(
{MyName_BINARY_DIR})引入项目。
在cmake3.14版本,官方又为我们提供了更方便的FetchContent_MakeAvailable方法,将步骤2,3集成在了一起。为了兼容3.11版本,我们可以把它封装成一个宏,这样我们就可以统一使用FetchContent_MakeAvailable方法了。
例如:
# 添加第三方依赖包 include(FetchContent) # FetchContent_MakeAvailable was not added until CMake 3.14 if(${CMAKE_VERSION} VERSION_LESS 3.14) include(add_FetchContent_MakeAvailable.cmake) endif() set(SPDLOG_GIT_TAG v1.4.1) # 指定版本 set(SPDLOG_GIT_URL https://github.com/gabime/spdlog.git) # 指定git仓库地址 FetchContent_Declare( spdlog GIT_REPOSITORY ${SPDLOG_GIT_URL} GIT_TAG ${SPDLOG_GIT_TAG} ) FetchContent_MakeAvailable(spdlog)
有时候,已经本地下载了库的源码,这时候注释掉 FetchContent_Declare()中的这些部分,如下所示
FetchContent_Declare(
spdlog
# GIT_REPOSITORY ${SPDLOG_GIT_URL}
# GIT_TAG ${SPDLOG_GIT_TAG}
)
参考:https://zhuanlan.zhihu.com/p/102050750
https://cmake.org/cmake/help/latest/module/FetchContent.html
分类:
计算机其它
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现