CMake 是一个跨平台的构建系统工具,可以帮助我们从源代码生成 Makefile、Ninja 构建文件、Visual Studio 工程、Xcode 工程等。
在这篇文章里,我们将从零开始,写一个最小的 CMakeLists.txt
,并使用 Ninja Multi-Config 构建系统,在同一个构建目录里同时支持 Debug 、 Release、 RelWithDebInfo 和 MinSizeRel 多种配置。
[ CMake ]
CMake 入门进阶:在项目中引入外部库
在上一篇文章中,我们已经学会了如何用 CMake 和 Ninja Multi-Config 构建一个最小的 C++ 应用程序。
在实际开发中,几乎所有项目都会依赖外部库,例如图像处理库 OpenCV。
这篇文章将介绍如何在 Windows 平台下手动安装 OpenCV,并在 CMake 工程中引入它。
CMake 进阶:构建与封装 C++ 库:从发布到使用
在 C++ 工程开发中,随着项目规模的扩大,公共功能往往需要封装成独立的库(Library),以便在多个应用中复用。CMake 提供了完整的支持:
- 在库项目中通过
install()
和export()
导出配置文件; - 在应用项目中通过
find_package()
查找并使用库。
本文将介绍如何拆分项目结构,并实现一个完整的 库发布与应用使用 的流程。
CMake 进阶:支持 DLL 导出函数与静态/动态库切换
在跨平台 C++ 库开发中,常见的两个需求是:
- Windows 平台下 DLL 的导出函数:需要在编译库时导出符号,在使用库时导入符号;
- 同时支持静态库和动态库:用户可以选择编译成
.dll/.so
或.lib/.a
; - 安装与导出时同时支持两种库:让应用项目通过
find_package()
使用时,能自动区分静态/动态库。
本文将介绍如何在 CMakeLists.txt
中实现这三个功能。