CppStack

C++技术栈一站式学习 · ‌业精于勤,荒于嬉;行成于思,毁于随。

[ CMake ]

CMake 入门:从零开始构建一个独立应用程序

CMake 是一个跨平台的构建系统工具,可以帮助我们从源代码生成 Makefile、Ninja 构建文件、Visual Studio 工程、Xcode 工程等。
在这篇文章里,我们将从零开始,写一个最小的 CMakeLists.txt,并使用 Ninja Multi-Config 构建系统,在同一个构建目录里同时支持 DebugReleaseRelWithDebInfoMinSizeRel 多种配置。

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 中实现这三个功能。