工欲善其事必先利其器--CMake牛刀小试
这里假设用户已经安装好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牛刀小试的更多相关文章
- 转:【工欲善其事必先利其器】—Entity Framework实例详解
开始本篇文章之前,先说一下Entity Framework 6 Alpha1在NuGet中已可用,原文链接http://blogs.msdn.com/b/adonet/archive/2012/10/ ...
- 单片机开发——02工欲善其事必先利其器(Proteus软件安装破解)
在单片机开发工程中,博主经常通过模拟软件Proteus进行模拟仿真,将编译生成的"HEX"文件下载在单片机芯片中,然后进行后期的debug工作,当模拟仿真完成之后,进行硬件测试部分 ...
- 单片机开发——01工欲善其事必先利其器(Keil软件安装破解)
本文是博主<单片机开发>博客第一篇文章,主要讲述51单片机编程软件Keil uVision4的安装及破解过程. 1. Keil uVision4安装包文件 PATH:链接 ...
- 工欲善其事必先利其器--------搭建Android平台
工欲善其事必先利其器--------搭建Android平台 1.1 安装JDK 在Eclipse的开发过程中需要JDK或JRE的支持,否则会报错. (1) 下载JDK(建 ...
- 古语云:工欲善其事必先利其器 --> 最新、最全的 IntelliJ IDEA(2018.3.3) 的介绍、安装、破解、配置与使用
原文:古语云:工欲善其事必先利其器 --> 最新.最全的 IntelliJ IDEA(2018.3.3) 的介绍.安装.破解.配置与使用 一.IntelliJ IDEA 介绍 -> Ecl ...
- java学习第一步-工欲善其事必先利其器
Java SE 磨刀不误砍柴工,工欲善其事必先利其器,咱们先搞好硬件配置,才能顺利的搞好Java学习 阶段一 1.认识Java 2.java发展史及用户 3.配置Java环境 4.JDK8下载安装 5 ...
- TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器
TIZ_c 第0周总结(2019/10/15-2019/10/22)工欲善其事必先利其器 任务清单 给自己取一个酷酷的id,并选择1-2个喜欢的方向.(只是初步选择,后期可更改) 改下群名片.例如yo ...
- 工欲善其事,必先利其器-Python编辑器选择(2)
前言:工欲善其事.必先利其器 一款顺手的好的编辑器可以让程序员写代码更得心应手,效率也会更高,但是编辑器本身没有好坏,只有使用者使用起来是否顺手而已,这里简单给大家介绍几款常用的可以编辑Python的 ...
- 工欲善其事必先利其器-Notepad++使用小记(Python)
大学开始就一直使用Notepad++ 作为代码编辑器,喜欢它的简洁明了,喜欢它的个性,也喜欢它各种各样骚气的插件. 今天闲来无事,写篇文章记录一下平时使用的种种,包括但不限于个性化使用一些宏,快捷键, ...
- 工欲善其事必先利其器——web调试工具firebug
一.Firebug工具简介 firebug是firefox下的一款开发类插件.firebug集html查看和编辑,JavaScript控制台,网络状况监视器于一体,是开发JavaScript,css, ...
随机推荐
- CentOS7.6 单用户模式下修改root密码
第一种方法: 1.启动时用上下键选择要进入的内核,输入'e'进入编辑 2.可以使用上下键移动找到linux16这行编辑ro 为 rw init=/sysroot/bin/sh 并使用ctrl + x进 ...
- 看了还不懂b+tree的本质就来打我
看了还不懂b+tree的本质就来打我 大家好,我是蓝胖子. 今天我们来看看b+tree这种数据结构,我们知道数据库的索引就是由b+tree实现,那么这种结构究竟为什么适合磁盘呢,它又有哪些缺点呢? 我 ...
- 手撕Ford-Fulkerson algorithm 学一半的笔记
目录 定义大概就这些 伪代码 自己做slide里的quiz 搬运别人的代码 我明白了, 余量网络 名如其名 比如你f/c=3/5 那么正边2,reverse edge3,加起来是5 在这个你建的新图上 ...
- 玩转SpringBoot原理:掌握核心技术,成为高级开发者
本文通过编写一个自定义starter来学习springboot的底层原理,帮助我们更好的使用springboot集成第三方插件 步骤一:创建项目 步骤二:添加依赖 步骤三:创建自动配置类 步骤四:创建 ...
- 表现标准语言CSS3学习 入门+导入方式
表现标准语言CSS3学习 入门+导入方式 如何学习: css是什么 css怎么用(快速入门) css选择器(重点+难点) 美化网页(文字.阴影.超链接.列表.渐变...) 盒子模型 浮动 定位 网页动 ...
- day02-搭建微服务基础环境01
搭建微服务基础环境01 1.创建父工程,用于聚合其他微服务模块 1.1创建父项目 说明:我们先创建一个父项目,该父项目会去管理多个微服务模块(module),如下: (1)File-New-Proje ...
- vue指令之属性指令
目录 属性指令 示例 属性指令 标签上的属性可以绑定变量,变量变化,属性也会变化 # 什么是属性?比如: href/src/name/value/class/style... 语法: v-bind:属 ...
- [PKM] 服务器
1 概述与基础常识 1.1 服务器的定义 定义: 服务器,英文名Server,指能提供某种服务的网络设备. 提供的主要服务包括:数据的接收和传递.数据的存储和数据的处理. 通俗点儿,我们可以把服务器比 ...
- LeeCode 90双周赛复盘
T1: 差值数组不同的字符串 思路:数组遍历 若前两个字符串差值数组不同,则只需要继续计算第三个字符串的差值数组即可得到答案 若前两个字符串差值数组相同,则依次遍历后续字符串,直至找到不同的差值数组 ...
- Idea快捷键——查找源码
双击shift 输入要查找源码类 相当于查 java_jdk_chm Ctrl+F12 :浏览类