Vs code 02 配置非标准的C、C++的编译环境

19 篇文章 0 订阅
19 篇文章 0 订阅

前言:自从微软收购了github之后Vs Code似乎越来越强...

而现在蜂拥而起的国内MCU的芯片商们,往往没有MD等的定制化的IDE

这个例子,我一步一步,从头开始,尝试用VS code 代替MD5 进行一个新的嵌入式系统【Melexis】的编译环境构建。


1 配置编译器:

1.1 下载

编译器用MinGW,可以自己去网站下源码,也可以用已经编译好的,这里面,下面这个链接是已经编译好的可以下载。

链接: https://pan.baidu.com/s/1EhmVd97xFRtfy3V3sJzQlg

提取码: qghe

1.2 安装

下载后,把下载好的mingw64的路径加到windows系统路径:

如图:

 并在【bin】,用【shirt + 鼠标右键】打开windows PowerShell确认一下。

 

 出现版本信息,配置成功


2 配置VScode

如图,根据你打开的问题,VSCODE会自动推荐插件


出错:

由于我的源码是嵌入式的系统【肯定不是桌面系统,也不是ARM,有专用的编译器】

现在,如果我们就那一个简单的C源码去直接启动调试,会报错:

首先的问题,这里报错的原因是头文件不对。

Vs code会自动更新配置状况,并尝试重新编译,

同时在输出窗口,提示我们现在的intellisense模式选型的windows-msvc-x64的编译器不对,

由于,现在使用的嵌入式系统的编译器和gcc嵌入式一致,因此,我们改一下,

这样之前的非兼容性报错没有了,当然,问题列表里面,找不到文件的事情还是存在的。

这个配置的结果,最终会给到【launch.json】这个配置文件。该文件主要是编译环境和调试环境配置。

小结:本例展示了对一个新的嵌入式系统,我们将如何更改他的编译环境。

However, for most debugging scenarios, creating a launch configuration file is beneficial because it allows you to configure and save debugging setup details. VS Code keeps debugging configuration information in a launch.json file located in a .vscode folder in your workspace (project root folder) or in your user settings or workspace settings.


但是,大多数的嵌入式系统,除了用IDE来进行编译外,很多开源的是用Make的方式来进行,对这种模式,Vscode提供了另外一个机制TASK:

VS Code can talk to a variety of external tools

 命令行的一些开源工具,如何整合到VScode?

These tools are mostly run from the command line and automate jobs inside and outside the inner software development loop (edit, compile, test, and debug). Given their importance in the development life cycle, it is helpful to be able to run tools and analyze their results from within VS Code. Tasks in VS Code can be configured to run scripts and start processes so that many of these existing tools can be used from within VS Code without having to enter a command line or write new code. Workspace or folder specific tasks are configured from the tasks.json file in the .vscode folder for a workspace.

tasks.json,需要如上绿色所示,在[.vscode]文件夹构建一个tasks.json的配置文件:

官网的举例,这里tasks.json的名字是可以任意修改的。


现在我们来用原来的源码做一个makefile的栗子:

通过刚才的设定,我们有如下这些源码结构:

这是一个标准的gcc的makefile编译结构,包括,一个源文件main.c,一个Makefile,传统的编译,就是在命令行里面,敲入make命令,就可以生成你要的执行文件。现在我们看看能不能把他配置到Vscode里面。

刚才我们已经说了,官网是直接新建一个文件夹+json的文件,

这里,我们用[shift]+[ctrl]+[p]打开顶部的命令行对话框,输入 task,

选择,配置默认任务【生成的任务】

 

自动生成task.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe 生成活动文件",
			"command": "H:\\工作\\mingw64\\bin\\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "调试器生成的任务。"
		}
	]
}

这里面有一个依据编译器的默认执行任务:【H:\\工作\\mingw64\\bin\\gcc.exe】

用[shift]+[ctrl]+[p]再次打开顶部

输入: task,然后,选择 【Run Task】

 然后选择要执行的任务,我们这里是编译,Cppbuild,

 这时候,会执行编译:

在【终端】窗口:

可以,看到在

(30条消息) VS code 调试配置01 Debugging_山云的专栏-CSDN博客
中设定的编译参数,这里都被执行了。


 OK,现在正式搞事情,

我们看我们的Makefile里面定义:

# Main rules
.PHONY: all
all: start $(TARGET).elf $(TARGET).hex $(TARGET).lss end

$(TARGET).elf : $(OBJS) $(LIBDIR)/lib$(PROFILE).a $(LD_SCRIPT)
	$(CC) $(OBJS) -o $@ $(LDFLAGS)

.PHONY: clean
clean:
	-$(RM) $(OBJDIR) *.MDS *.cod
	-$(RM) $(TARGET).map $(TARGET).lss $(TARGET).elf
	-$(RM) $(TARGET).hex $(TARGET)_APP.hex

这个Makefile,里面定义了两个功能执行参数,all,clean,

我们然后,我们把这个和VS的task联系起来,

先重新编辑一下tasks.json,

 注意:makefile的参数直接写,不需要写到args的列表里面,编辑后,需要重新启动Vscode.

{
	"version": "2.0.0",
	"tasks": [
		{
            "label": "buildTarget",
            "command": "make all",
			//"args": ["all"],
            "type": "shell"
		},
		{
            "label": "CleanTarget",
            "command": "make clean",
			//"args": ["clean"],
            "type": "shell"
		}
	]

}

重新启动后,之前默认的命令参数变成我们的make命令。 

然后,我们选择【终端】

【运行任务】里面有我们刚才定义的两个make命令,buildtarget和Cleantarget.

点击一下,他有一个可能的风险提示,

我们不管继续执行,

可以看到,在终端输出了make 的结果,里面的打印信息是Makefile文件里面的东西。

这样,我们就将Makefile,绑定在Vscode的环境里面。


可能出现的问题:

调整task.json后,最好是重新关闭并启动一下VScode,以免之前的task.json的定义会影响。 


小结:用Vscode执行makefile,感觉有点费劲,本来命令行的执行就好,写了很多配置,还是命令行的执行和结果,我想唯一的好处就是给对makefile不熟悉,系统不熟悉的人做的。也许方便未来的客户支持和调试吧。


参考:

(18条消息) VsCode安装和配置c/c++环境(超完整,小白专用)_黄化的多多-CSDN博客

Debugging in Visual Studio Code

​​​​​​Tasks in Visual Studio Code

(29条消息) VSCode 结合Makefile设置调试方法_gbmaotai的博客-CSDN博客

(30条消息) VS code 调试配置01 Debugging_山云的专栏-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franklin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值