现代CMake使用,使C++代码解耦

一、前言

本节所以代码均可在CMake_Template仓库中找到。
支持对不同模块进行gtest单元测试

二、为什么使用CMake?

1 跨平台

CMake能够生成适用于多种平台(如Windows、Linux、macOS等)的构建系统(例如Makefile、Visual Studio项目、Xcode项目等)。这意味着开发者只需编写一次CMake配置文件,就可以在不同的平台上构建项目,而不必为每个平台单独编写构建脚本。

2 解耦项目,提高项目的可维护性

CMake的模块化和配置管理特性使得项目的配置文件更容易理解和维护。

这里我只说我喜欢CMake的点。

三、作者喜欢的结构

如果有CMake基础,直接用就可以了。

.
├── CMakeLists.txt
├── README.md
├── cmake
│   ├── FindDependencies.cmake
│   └── ProjectSettings.cmake
├── include
│   └── project_name
│       ├── module1.h
│       └── module2.h
├── modules
│   └── modules1
│       ├── CMakeLists.txt
│       ├── include
│       │   └── internal.h
│       ├── src
│       │   └── module1.cpp
│       └── test
│           ├── CMakeLists.txt
│           └── module1_test.cpp
├── src
│   ├── CMakeLists.txt
│   └── main.cpp
└── test
    ├── CMakeLists.txt
    └── test_add.cpp
  • CMakeLists.txt: CMake项目的核心配置文件,定义了项目的构建过程和规则。

  • cmake: 实现对主CMakeLists.txt的解耦。

    • FindDependencies.cmake: 存放依赖
    • **ProjectSettings.cmake:**存放项目设置
  • modules: 核心点,把原项目拆分为不同的子模块。

    • include: 模块头文件
    • src: 模块源文件
    • test: 模块单元测试
  • src: 存放主函数

  • test: 单元测试

  • include: 放一些,模块外,main可能用到的头文件

具体的CMakeLists.txt的内容,大家可以自己进入我的仓库查看。

四、CMake的基础概念

1 用CMake管理项目分为两步

  1. 生成构建系统文件
    在根目录下创建build目录,运行camke ..
mkadir build
cmake ..
  1. 对当前目录进行构建
cmake --build .

简单来说,如果你的项目结构发变化(CMakeLists.txt),那么你就要重新清空build目录,重新执行第一步。如果只是内容(.cpp or .h)变化,重新执行第二步就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值