这里假设用户已经安装好MinGW编译套件!并配置好环境变量!具体怎么下载和配置网上教程非常多,这里贴上一个链接:不仅教你安装MinGW还教你安装VScode配置

1、学习c plus plus编码为什么要学习CMake?

在Windows下使用集成开发环境(IDE)开发项目时,一般会使用IDE自带的构建工具(如Visual Studio的MSBuild),而不是使用CMake,是不是使用Visual Studio很爽,一键构建,反正也不清楚那么多源文件先编译谁,后编译谁,反正一点击run就完事了!所以如果你想了解你生成的可执行程序(exe)是具体如何出现的,那么了解CMake可以帮助你更好地理解项目结构和构建过程。此外,如果你需要跨平台的项目,或需要在多个平台上构建同一个项目,使用CMake也是一个不错的选择。CMake中的C全称是Cross,表示跨平台!

2、CMake、MakeLists、MakeFile三者和用户之间的爱恨情仇

刚接触CMake时:啥玩意?我有Visual Studio,有QT,我用这玩意?搞这么复杂!abandon!

GitHub一搜代码,发现大佬很多都用CMake,迫不得已又开始接触CMake

项目要求c++代码跨平台,沃日,又得接触CMake!

CMake、MakeLists、MakeFile三者之间关系如下图所示。

(1)MakeLists是用户编写

(2)CMake不是用户编写,需要官网下载并配置环境变量:CMake 安装教程

(3)MakeFile不是用户编写,通过执行CMake命令自动生成

(4)Make不是用户编写,被包含在CMake里面了

综上所述,重点关注MakeLists如何编写,其他几个浅尝辄止!

CMake的牛刀小试图

3、Cmake小试牛刀

真学技术还是得官网!--> CMake tutorial

CMake tutorial手把手保姆式教学,12个用例随时学,用到哪个功能时再去学对应案例一点都不迟,不要陷入学习中!重点是了解CMake工作机制和流程!

4、练习Step1需要注意的点

严格按照步骤来,先准备好源文件

(1)编写CMakeLists.txt

下面是编写CMakeLists.txt的核心三部曲:

cmake_minimum_required(VERSION 3.25.1) // 1. 设定本工程需要的最低cmake版本!
project(Tutorial) // 2. 设定工程名字
add_executable(Tutorial tutorial.cxx) // 3. 告诉cmake使用定义的源文件tutorial.cxx生成可执行文件Tutorial

cmake_minimum_required(VERSION 3.25.1)命令这里存疑,cmake版本设置多少合适呢?不是很重要,暂不研究,只需要知道一旦设置了VERSION 3.25.1,那么camke版本必须大于等于3.25.1!

project(Tutorial)需要注意的是Tutorial是你的工程名字,作用是为了在后续的CMakeLists.txt文件中,我们可以使用该项目名称和支持的语言类型来进行其他设置。

注意project(Tutorial)中的Tutorial和add_executable(Tutorial tutorial.cxx)中的Tutorial 是一样的,但其实可以不一样,前者是工程名,后者是可运行文件名。根据用户命名习惯怎么设置都行!

(2)通过CMakeLists.txt生成MakeFile相关的一些列文件

为了防止生成的MakeFile文件跟源文件混合在一起导致混乱,新建Step1_build文件夹

在Step1_build文件夹中打开终端

执行如下指令

cmake -G "MinGW Makefiles" ../Step1

生成的中间文件如下

(3)通过MakeFile文件将源码翻译并链接生成可执行文件

通过如下命令

 mingw32-make

或者

cmake --build .

生成的可执行文件如下

至此,CMakeLists.txt-->MakeFile-->可执行文件告一段落!

工欲善其事必先利其器--CMake牛刀小试的更多相关文章

  1. 转:【工欲善其事必先利其器】—Entity Framework实例详解

    开始本篇文章之前,先说一下Entity Framework 6 Alpha1在NuGet中已可用,原文链接http://blogs.msdn.com/b/adonet/archive/2012/10/ ...

  2. 单片机开发——02工欲善其事必先利其器(Proteus软件安装破解)

    在单片机开发工程中,博主经常通过模拟软件Proteus进行模拟仿真,将编译生成的"HEX"文件下载在单片机芯片中,然后进行后期的debug工作,当模拟仿真完成之后,进行硬件测试部分 ...

  3. 单片机开发——01工欲善其事必先利其器(Keil软件安装破解)

        本文是博主<单片机开发>博客第一篇文章,主要讲述51单片机编程软件Keil uVision4的安装及破解过程. 1. Keil uVision4安装包文件      PATH:链接 ...

  4. 工欲善其事必先利其器--------搭建Android平台

    工欲善其事必先利其器--------搭建Android平台 1.1            安装JDK 在Eclipse的开发过程中需要JDK或JRE的支持,否则会报错. (1)     下载JDK(建 ...

  5. 古语云:工欲善其事必先利其器 --> 最新、最全的 IntelliJ IDEA(2018.3.3) 的介绍、安装、破解、配置与使用

    原文:古语云:工欲善其事必先利其器 --> 最新.最全的 IntelliJ IDEA(2018.3.3) 的介绍.安装.破解.配置与使用 一.IntelliJ IDEA 介绍 -> Ecl ...

  6. java学习第一步-工欲善其事必先利其器

    Java SE 磨刀不误砍柴工,工欲善其事必先利其器,咱们先搞好硬件配置,才能顺利的搞好Java学习 阶段一 1.认识Java 2.java发展史及用户 3.配置Java环境 4.JDK8下载安装 5 ...

  7. TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器

    TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器 任务清单 给自己取一个酷酷的id,并选择1-2个喜欢的方向.(只是初步选择,后期可更改) 改下群名片.例如yo ...

  8. 工欲善其事,必先利其器-Python编辑器选择(2)

    前言:工欲善其事.必先利其器 一款顺手的好的编辑器可以让程序员写代码更得心应手,效率也会更高,但是编辑器本身没有好坏,只有使用者使用起来是否顺手而已,这里简单给大家介绍几款常用的可以编辑Python的 ...

  9. 工欲善其事必先利其器-Notepad++使用小记(Python)

    大学开始就一直使用Notepad++ 作为代码编辑器,喜欢它的简洁明了,喜欢它的个性,也喜欢它各种各样骚气的插件. 今天闲来无事,写篇文章记录一下平时使用的种种,包括但不限于个性化使用一些宏,快捷键, ...

  10. 工欲善其事必先利其器——web调试工具firebug

    一.Firebug工具简介 firebug是firefox下的一款开发类插件.firebug集html查看和编辑,JavaScript控制台,网络状况监视器于一体,是开发JavaScript,css, ...

随机推荐

  1. 基于Sekiro的jsRPC的使用和安装

    什么是jsRPC 说实话在介绍 JSRPC 我向大家推荐一个库 Selenium-wire 感觉和JSrpc的原理很像 RPC指远程过程调用,APP里面的RPC大家比较熟悉了. 那什么是jsRPC,顾 ...

  2. Android 音视频采集那些事

    音视频采集 在整个音视频处理的过程中,位于发送端的音视频采集工作无疑是整个音视频链路的开始.在 Android 或者 IOS 上都有相关的硬件设备--Camera 和麦克风作为输入源.本章我们来分析如 ...

  3. AES 简介 以及 C# 和 js 实现【加密知多少系列】

    〇.AES 简介 AES 的全称是 Advanced Encryption Standard,意思是高级加密标准.它的出现主要是为了取代 DES(Data Encryption StandardDat ...

  4. 从零开始学习 Java 系列之你为什么要学 Java?

    全文大约[4000]字,不说废话,只讲可以让你学到技术.明白原理的纯干货! 在正式开始本系列教程之前,壹哥希望先用一篇文章,来扫清你学习前的认知障碍.请坚定自己的学习信念,不要半途而废浪费时间,壹哥希 ...

  5. scoket用法

    一.scoket基本介绍 1.scoket简介(以下是来自chatgpt回答) 1)Socket(套接字)是计算机网络中用于描述主机之间通信的一种机制.它定义了一种标准的接口, 使得应用程序可以利用网 ...

  6. Service Mesh之Istio基础入门

    技术背景 分布式服务治理 所谓分布式服务治理就是对服务不断增长的复杂度的管控和管理:管控及管理包含网络拓扑变动.网络延时.通信安全.API网关.服务注册和发现.服务熔断容错.服务超时重试.服务部署.数 ...

  7. 单元测试、文档测试、读写文件、StringIO和BytesIO

    1.单元测试就是为了测试程序执行的正确性 2.编写单元测试时,需要编写一个单元测试类,继承unittest TestCase类 3.单元测试最常用的断言是assert,断言期望抛出指定的异常 4.运行 ...

  8. Centos 7安装Elasticsearch 7.6

    Centos 7安装Elasticsearch 7.6 Elasticsearch与JDK版本对应关系 在安装 Elasticsearch 时,要注意 Elasticsearch 与 JDK 的版本对 ...

  9. day110:MoFang:重新构造用户关系状态&添加好友&处理好友申请&获取申请好友历史记录&好友列表显示

    目录: 1.用户关系状态:重新构造 2.添加好友 3.处理好友申请 4.获取申请好友历史记录 5.好友列表 day109+day110所学内容流程图 1.用户关系状态:重新构造 在day109博客的前 ...

  10. Github 添加贪吃蛇动画

    前言 我们都知道,对于Github来说,当你选择你的账户时,可以看到自己的提交记录. 于是就有大神动脑筋了,这些commit记录都是一些豆,如果弄一条蛇来,不就可以搞个贪吃蛇了吗? 有道理有道理,本文 ...