VSCode和CMake实现Ubuntu下C/C++开发总结
目录
- 0.简介
- 1.Linux系统介绍
- 2.开发环境搭建
-
- 2.1 编译器,调试器安装
- 2.2 CMake安装
- 3.GCC编译器
-
- 3.1 编译过程
- 3.2 g++重要编译参数
- 4.g++编译实战
-
- 4.0 编译前
- 4.1 直接编译
- 4.2 生成库文件并编译
- 4.3 编译后
-
- 4.3.1 编译完成后的目录结构
- 4.3.2 运行可执行文件
- 5.GDB调试器
-
- 5.1 前言:
- 5.2 GDB主要功能:
- 5.3 常用调试命令参数
- 6.IDE-VSCode
-
- 6.1 插件
- 7.CMake
-
- 7.1 前言:
- 7.2 语法
-
- 7.2.1 基础语法
- 7.2.2 重要指令和CMake常用变量
-
- 7.2.2.1 重要指令
- 7.2.2.2 常用变量
- 7.2.3 CMake编译工程
- 7.2.4 编译流程
- 8.实践-使用VSCode进行完整项目开发
- 附:
0.简介
1.Linux系统介绍
一切皆文件:创建、编辑、保存、关闭、重命名、删除、恢复(文件)
-
mkdir - make directories
用法1:mkdir 路径 创建目录
用法2:mkdir -p 路径 一次性创建多层不存在的目录 mkdir -p ~/a/b/c
用法3:mkdir 路径1 [路径2] [路径3] 一次性创建多个目录 mkdir a b c -
touch - change file timestamps
创建新文件
用法1:touch [路径]
用法2:touch [路径1] [路径2]
【为什么创建新文件是touch】
- touch的作用本来不是创建文件,而是将指定文件的修改时间设置为当前时间。就是假装“碰”(touch)了一下这个文件,假装文件被“修改”了,于是文件的修改时间就是被设置为当前时间。
- 这带来了一个副作用,就是当touch一个不存在的文件的时候,它会创建这个文件。然后,由于touch已经可以完成创建文件的功能了,就不再需要一个单独的create了。
-
rm - remove files or directories
作用:删除文件/目录
用法1:rm [选项] 需要移除的文件路径
用法2:rm [选项] 需要移除的目录 -
cp - copy files and directories
作用:复制文件/文件夹到指定的位置
用法1:cp [被复制的文件路径] [文件被复制到的路径]
用法2:cp -r [被复制的文件夹路径] [文件夹被复制到的路径]* -
mv - move (rename) files
作用:移动文件到新的位置,或者重命名文件
用法:mv [需要移动的文件路径] [需要保存的位置路径] -
man - an interface to the system reference manuals
作用:包含了Linux中全部命令手册,查看命令使用手册,按 q 退出 -
reboot - reboot the machine
作用:重启linux系统 -
shutdown - power-off the machine
作用:关机
用法:shut -h [时间] shutdown -h now
2.开发环境搭建
2.1 编译器,调试器安装
- 安装GCC,GDB
sudo apt update
# 通过以下命令安装编译器和调试器
sudo apt install build-essential gdb
- 安装成功确认
# 以下命令确认每个软件是否安装成功
# 如果成功,则显示版本号
gcc --version
g++ --version
gdb --version
2.2 CMake安装
- 安装cmake
# 通过以下命令安装编译器和调试器
sudo apt install cmake
- 安装成功确认
# 确认是否安装成功
# 如果成功,则显示版本号
cmake --version
3.GCC编译器
1.GCC 编译器支持编译 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAIL)等程序;
2.Linux 开发C/C++ 一定要熟悉 GCC
3.VSCode是通过调用GCC编译器来实现C/C++的编译工作的
实际使用中
使用 gcc 指令编译 C 代码
使用 g++指令编译 C++ 代码
3.1 编译过程
预处理-Pre-Processing //.i文件
编译-Compiling // .s文件
汇编-Assembling // .o文件
链接-Linking // bin文件
# -E 选项指示编译器仅对输入文件进行预处理
g++ -E test.cpp -o test.i //.i文件
# -S 编译选项告诉 g++ 在为 C++ 代码产生了汇编语言文件后停止编译
# g++ 产生的汇编语言文件的缺省扩展名是 .s
g++ -S test.i -o test.s
# -c 选项告诉 g++ 仅把源代码编译为机器语言的目标代码
# 缺省时 g++ 建立的目标代码文件有一个 .o 的扩展名。
g++ -c test.s -o test.o
# -o 编译选项来为将产生的可执行文件用指定的文件名
g++ te