基于VSCode和CMake实现的C/C++开发-Linux篇

本次课程适合的对象:

总而言之,本课程将从零开始,教会你如何在Linux开发C/C++,带领你一起打开新世界的大门~

系统环境:Ubuntu18.04 LTS 虚拟机

开发语言:C++

开发IDE :VSCode

课程宗旨:无干货,不视频。分享让生活更美好。

CMake_1731165197767

 

 

开始

什么是linux系统?

多用户多任务:

Windows属于:单用户、多任务。

Linux属于:多用户、多任务。

Linux一切皆文件

对于文件的操作的都有哪些种类?

目录结构

目录结构:

指令与选项

重要指令讲解 +【实战】命令行

文件编辑

开发环境搭建

编译器,调试器安装

CMake安装

GCC编译器

前言

  1. GCC 编译器支持编译 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAIL)等程序;

  2. Linux 开发C/C++ 一定要熟悉 GCC

  3. VSCode是通过调用GCC编译器来实现C/C++的编译工作的;

实际使用中:

编译过程

预处理-Pre-Processing //.i文件

编译-Compiling // .s文件

汇编-Assembling // .o文件

链接-Linking // bin文件

g++重要编译参数

-g 编译带调试信息的可执行文件

-O[n] 优化源代码

-l 和 -L 指定库文件 | 指定库文件路径

-I 指定头文件搜索目录

Wall 打印警告信息

-w 关闭警告信息

-std=c++11 设置编译标准

-o 指定输出文件名

  1. -D 定义宏

示例代码:

注:使用 man gcc命令可以查看gcc英文使用手册,见下图

【实战】g++命令行编译

案例:最初目录结构: 2 directories, 3 files

直接编译

最简单的编译,并运行

增加参数编译,并运行

生成库文件并编译


链接静态库生成可执行文件①:

链接动态库生成可执行文件②:

编译完成后的目录结构


最终目录结构:2 directories, 8 files

运行可执行文件


运行可执行文件①

运行可执行文件②

GDB调试器

前言:

Windows 系统中,常见的集成开发环境(IDE),如 VS、VC等,它们内部已经嵌套了相应的调试器

GDB主要功能:

常用调试命令参数

调试开始:执行gdb [exefilename] ,进入gdb调试程序,其中exefilename为要调试的可执行文件名

Tips:

  1. 编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main

  2. 回车键:重复上一命令

【实战】命令行调试

给出一段简单代码,准备调试。

IDE - VSCode

界面介绍

  1. 侧边栏

  2. 菜单栏

  3. 编辑区

  4. 状态栏

插件安装

以下三款插件是在Linux下开发C/C++的三款必备插件~

快捷键

高频使用快捷键:

功能快捷键功能快捷键
转到文件 / 其他常用操作Ctrl + P关闭当前文件Ctrl + W
打开命令面板Ctrl + Shift + P当前行上移/下移Alt + Up/Down
打开终端Ctrl +`` | 变量统一重命名 |F2`  
关闭侧边栏Ctrl + B转到定义处F12
复制文本Ctrl+C粘贴文本Ctrl+V
保存文件Ctrl+S撤销操作Ctrl+Z

Ctrl+P 窗口下还可以:

快捷键:编辑器与窗口管理

  1. 打开一个新窗口: Ctrl+Shift+N

  2. 关闭窗口: Ctrl+Shift+W

  3. 同时打开多个编辑器(查看多个文件)

  4. 新建文件 Ctrl+N

  5. 文件之间切换 Ctrl+Tab

  6. 切出一个新的编辑器(最多 3 个) Ctrl+\\,也可以按住 Ctrl 鼠标点击 Explorer 里的文件名

  7. 左中右 3 个编辑器的快捷键 Ctrl+1 Ctrl+2 Ctrl+3

  8. 3 个编辑器之间循环切换 Ctrl+

  9. 编辑器换位置, Ctrl+k然后按 LeftRight

↓ 代码编辑相关的快捷键 ↓

快捷键:格式调整

  1. 代码行缩进 Ctrl+[Ctrl+]

  2. Ctrl+CCtrl+V 复制或剪切当前行/当前选中内容

  3. 代码格式化: Shift+Alt+F,或 Ctrl+Shift+P 后输入 format code

  4. 上下移动一行: Alt+UpAlt+Down

  5. 向上向下复制一行: Shift+Alt+UpShift+Alt+Down

  6. 在当前行下边插入一行 Ctrl+Enter

  7. 在当前行上方插入一行 Ctrl+Shift+Enter

快捷键:光标相关

  1. 移动到行首: Home

  2. 移动到行尾: End

  3. 移动到文件结尾: Ctrl+End

  4. 移动到文件开头: Ctrl+Home

  5. 移动到定义处: F12

  6. 定义处缩略图:只看一眼而不跳转过去 Alt+F12

  7. 移动到后半个括号: Ctrl+Shift+]

  8. 选择从光标到行尾: Shift+End

  9. 选择从行首到光标处: Shift+Home

  10. 删除光标右侧的所有字: Ctrl+Delete

  11. 扩展/缩小选取范围: Shift+Alt+LeftShift+Alt+Right

  12. 多行编辑(列编辑):Alt+Shift+鼠标左键Ctrl+Alt+Down/Up

  13. 同时选中所有匹配: Ctrl+Shift+L

  14. Ctrl+D 下一个匹配的也被选中 (在 sublime 中是删除当前行,后面自定义快键键中,设置与 Ctrl+Shift+K 互换了)

  15. 回退上一个光标操作: Ctrl+U

快捷键:重构代码

  1. 找到所有的引用: Shift+F12

  2. 同时修改本文件中所有匹配的: Ctrl+F12

  3. 重命名:比如要修改一个方法名,可以选中后按 F2,输入新的名字,回车,会发现所有的文件都修改了

  4. 跳转到下一个 ErrorWarning:当有多个错误时可以按 F8 逐个跳转

  5. 查看 diff: 在 explorer 里选择文件右键 Set file to compare,然后需要对比的文件上右键选择 Compare with file_name_you_chose

快捷键:查找替换

  1. 查找 Ctrl+F

  2. 查找替换 Ctrl+H

  3. 整个文件夹中查找 Ctrl+Shift+F

快捷键:显示相关

  1. 全屏:F11

  2. zoomIn/zoomOut:Ctrl +/-

  3. 侧边栏显/隐:Ctrl+B

  4. 显示资源管理器 Ctrl+Shift+E

  5. 显示搜索 Ctrl+Shift+F

  6. 显示 Git Ctrl+Shift+G

  7. 显示 Debug Ctrl+Shift+D

  8. 显示 Output Ctrl+Shift+U

【实战】2个小项目

通过手写2个小项目,呈现出基本的C++工程建立的过程,并编译运行这两个小项目

高频使用技巧

代码编写

编译并运行

CMake

前言

Cross-platform development

Let’s assume you have some cross-platform project with C++ code shared along different platforms/IDEs. Say you use Visual Studio on Windows, Xcode on OSX and Makefile for Linux:

What you will do if you want to add new bar.cpp source file? You have to add it to every tool you use:

To keep the environment consistent you have to do the similar update several times. And the most important thing is that you have to do it manually (arrow marked with a red color on the diagram in this case). Of course such approach is error prone and not flexible.

CMake solve this design flaw by adding extra step to development process. You can describe your project in CMakeLists.txt file and use CMake to generate tools you currently interested in using cross-platform CMake code:

Same action - adding new bar.cpp file, will be done in one step now:

Note that the bottom part of the diagram was not changed. I.e. you still can keep using your favorite tools like Visual Studio/msbuild, Xcode/xcodebuild and Makefile/make!


语法特性介绍

重要指令和CMake常用变量

重要指令

CMake常用变量


CMake编译工程

CMake目录结构:项目主目录存在一个CMakeLists.txt文件

两种方式设置编译规则

  1. 包含源文件的子文件夹包含CMakeLists.txt文件,主目录的CMakeLists.txt通过add_subdirectory添加子目录即可;

  2. 包含源文件的子文件夹未包含CMakeLists.txt文件,子目录编译规则体现在主目录的CMakeLists.txt中;

编译流程

在 linux 平台下使用 CMake 构建C/C++工程的流程如下:



两种构建方式

【实战】CMake代码实践

针对第五章写的两个小项目来写对应的CMakeLists.txt

最小CMake工程

多目录工程 - 直接编译

多目录工程 - 生成库编译

【实战】完整项目开发

 

 

 

 

 

案例名称:士兵突击

需求列表

  1. 士兵 许三多 有一把,叫做 AK47

  2. 士兵 可以 开火

  3. 士兵 可以 给枪装填子弹

  4. 能够 发射 子弹

  5. 能够 装填子弹 —— 增加子弹数量

开发过程

合理设置项目目录

编写项目源文件

编写CMakeLists.txt

编译CMake项目

配置json文件并调试项目