使用vscode在linux平台开发C++程序(1)(包括cmake,gdb)

这篇博客详细介绍了如何在Linux环境下使用VSCode进行C++开发,包括安装VSCode,远程连接Linux,配置C++环境,使用g++编译多文件工程,理解编译过程及参数,使用CMake管理和构建项目,以及在VSCode中配置launch.json和tasks.json以实现一键编译和调试。
摘要由CSDN通过智能技术生成

写这篇博客主要目的是记录以下几个知识点,接下来一个接一个介绍其概念与用法。
1,认识并使用vscode
2,使用g++编译运行一个多文件C++工程
3,使用cmake编译一个多文件C++工程
4,在vscode上面编译运行/调试一个多文件C++工程
5,不用vscode直接使用gdb调试一个多文件C++工程
6,在vscode上直接调试一个C++工程与在vscode上使用gdb调试一个C++工程相结合

1,认识并使用vscode

1)vscod下载,可以进官网下载,但是比较慢,也可以直接从我的百度网盘下载,比较快VSCodeUserSetup-x64-1.54.2,提取码:6666
2)将vscode远程连接阿里云linux服务器,或者个人的linux虚拟机,远程连接方法与连接过程中遇到的错误在都记录在我的这篇博客中:
玩转linux时遇到的问题(同步更新)
3)远程连接好linux以后,在linux上编写一个简单的C++程序。(注意在这之前先在远程linux上安装好g++,gcc,gdb,cmake
vscode简单使用.mp4;提取码:6666
这里只是介绍了工程中只有单文件(只有一个cpp文件)时,怎么编译运行的问题,后面如果我们的一个工程比较大,可能头文件,源文件都在不同的文件夹中,构成一个项目。这个项目的编译运行就需要格外注意了:
1)在终端直接编译运行,需要熟悉g++怎么编译运行一个多文件C++工程的方法。
2)在vscode界面直接编译运行,需要熟悉怎么配置两个json文件,launch.json,tasks.json;这些东西在后文都会讲到。

2,使用g++编译运行一个多文件C++工程

2.1 编译过程

在前面视频的介绍中,我们可以看到直接用g++ hello.cpp -o hello实际上这条编译语句是一次性将hello.cpp编译为一个可执行文件hello,完整的步骤应该有四步——预处理,编译,汇编,链接。读者可以选择处理完这四步将程序编译为可执行文件,也可以像前面一样直接g++ hello.cpp -o hello这里先介绍以下这四步是如何处理的。
1,预处理——.cpp文件–>.i文件

//将输入的.cpp文件预处理成.i文件
//注意-o选项后面接生成的文件名
g++ -E hello.cpp -o hello.i
//读者可以在linux终端使用cat语句查看hello.i文件

2,编译——.i文件–>.s文件

//将.i文件编译为汇编代码文件.s
g++ -S hello.cpp -o hello.s

3,汇编——.s文件–>.o文件

//将.s汇编文件再次编译为机器代码文件.o文件
g++ -c hello.s -o hello.o

4,链接——.o文件–>bin文件

//将.o机器代码文件链接起来(如果有多个cpp文件就需要链接)
g++ hello.o -o hello

2.2 编译过程中的一些重要参数

(重要看第4条,介绍了如何编译多文件C++工程
1,-g-g选项告诉GCC产生能被GNU调试器GDB使用的调试信息,以调试程序。产生带调试信息的可执行文件g++ -g hello.cpp -o hello,注意到这个-g选项加在了g++后面,其实这个参数的位置放哪里都无所谓,也可以这样g++ hello.cpp -o hello -g,下面要讲的其他的参数的位置也是同样无所谓的。
2,-O,优化源代码
所谓优化,例如省略掉代码中从未使用过的变量、直接将常量表达式用结果值代替等等,这些操作
-01为默认优化
-02除了完成-01的优化之外,还进行一些额外的调整工作,如指令调整等。g++ -O2 hello.cpp -o hello
-03则包括循环展开和其他一些与处理特性相关的优化工作。
3,-l或者-L,指定库文件|指定库文件路径
-l(小写)指定程序要链接的库,然后不用带空格直接写要连接的库名(在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接,不用后面的-L参数指定库文件所在目录)
-L参数跟着就是库文件所在的目录名。
例如:
1)g++ -lglog hello.cpp -o hello链接glog库
2)g++ -L/home/dir1/test -ltest hello.cpp -o hello链接
/home/dir1/test -ltest目录下的test库
4,-I系统里的inlude头文件一般是不用指定的,gcc知道去哪里找,但是如果不是系统头文件的话,就需要指定include文件所在目录。
例如我们的某一个C++项目的文件结构如下:
在这里插入图片描述
可以看到要编译这个工程需要编译两个cpp文件,而且还要注意到有一个头文件在当前项目的根目录下的include目录下,因此编译这个工程的的语句为g++ -Iinclude main.cpp add.cpp -o main这也是我们使用g++编译一般多文件C++工程的方法。
5,-Wall打印警告信息
6,-w关闭警告信息
7,-std==C++11使用C++11标准编译
8,-o指定输出文件名
9,-D定义宏,例如-DDebug定义Debug宏,可能文件中有Debug宏部分的相关信息,用个Gebug来选择开启或关闭Debug
示例代码:

// -Dname 定义宏name, ,默认定 义内容为字符串“1”
#include <stdio.h>
int main( )
{
   
#ifdef DEBUG
printf
  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值