这里假设用户已经安装好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. java的maven项目打包成.exe可执行文件

    打包exe可执行脚本: 1.源代码maven项目写完后打包成可执行jar包,此处我使用的是assembly插件. <plugin> <groupId>org.apache.ma ...

  2. Spring--注解开发+依赖注入

    自动装配 数据层: 业务层: 自动装配: 结果: 若是将自动装配的注解放在set函数处: 结果: 结果相同,若是将set方法去掉的话: 结果: 这样的话,set方法也得到解放了耶! 以上都是按照类型装 ...

  3. MySQL学习(十三)InnoDB

    参考博客: https://my.oschina.net/wangzemin/blog/5346534 InnoDB之BufferPool https://juejin.cn/post/7007421 ...

  4. 基于 Agora SDK 实现 iOS 端的多人视频互动

    视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦.直播答题.一起 KTV.电商直播.互动大班课.视频相亲等. 本文将教你如何通过声网Agora 视频 SDK 在iOS端实现一个视频直播应用. ...

  5. RTE2021 回顾丨HDR 技术产品实践与探索

    本文整理自 OPPO HDR 研发负责人熊磊,在 RTE2021 实时互联网大会上的演讲.他通过介绍 HDR 视频标准与生态.关键技术.发展方向三部分,分享了在移动端 HDR 视频的落地情况以及技术细 ...

  6. ThreadLocal部分源码分析和应用场景

    结构演进 早起JDK版本中,ThreadLocal内部结构是一个Map,线程为key,线程在"线程本地变量"中绑定的值为Value.每一个ThreadLocal实例拥有一个Map实 ...

  7. grub 命令使用

    命令列表 ubuntu 的 iso 盘内一般有 command.lst 这个文件,里面是 grub 支持的命令 加载字体 ( 方便中文显示 ) grub> loadfont $prefix/fo ...

  8. webpack踩坑日记

    webpack 4.x 详细入门这是一个大佬的总结,但是我用webpack5重写该demo时,发现了几个有问题的地方1:CleanWebpackPlugin 应该这样: const { CleanWe ...

  9. 技术分享:Proxy-Pool代理池搭建IP代理

    技术分享:Proxy-Pool代理池搭建IP代理 前言本章内容仅供参考,不涉及实际使用,主要使用Python环境和Redis数据库进行环境搭建,工具网盘存储如下,有问题可以私聊我.网址:https:/ ...

  10. 异步注解@Async使用及其部分调优

    对于spring异步注解@Async的使用: 对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法.调用者将在调用时立即返回,方法的实际执行将提 ...