跳到主要内容

CMake 依赖管理概述

项目常常需要依赖第三方库(系统库、预编译库或源码)。CMake 提供多种方式发现、引用这些依赖,并正确设置包含路径、链接库和编译定义。

常见方式

方式适用场景说明
find_package()提供 CMake 配置脚本的库(如 Qt、OpenCV、Boost)最常用,可得到导入目标(如 Qt5::Core),直接 target_link_libraries。
pkg-config提供 .pc 文件的库(常见于 Linux)pkg_check_modules() 获取编译/链接选项,再交给 target。
FetchContent从 URL/Git 拉取源码并在配置时构建CMake 3.14+,适合无系统包时的依赖。
ExternalProject在构建时下载、配置、编译外部项目更灵活,可控制编译时机和选项,适合大型或需定制的依赖。

推荐用法

  1. 优先 find_package:若库提供 XXXConfig.cmakeFindXXX.cmake,用 find_package(XXX REQUIRED),再用 target_link_libraries(你的目标 PRIVATE XXX::XXX) 链接。
  2. 系统有 .pc 文件时:用 pkg-config 集成(见 pkg-config 集成)。
  3. 无系统包且需从源码构建:用 FetchContent(见 FetchContent 使用)或 ExternalProject(见 ExternalProject 使用)。

后续章节会分别介绍 find_package、pkg-config、FetchContent 和 ExternalProject 的用法。

阿基米东
📝 作者:阿基米东

GetIoT.tech 创始人,独立开发者,Linux 重度用户,开源软件作者,创业者,INTJ