跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > VSCode使用Makefile Tools插件开发C/C++程序

VSCode使用Makefile Tools插件开发C/C++程序

时间:2024-04-24 17:30:52 来源:网络cs 作者:付梓 栏目:卖家故事 阅读:

标签: 程序  使用 
阅读本书更多章节>>>>

提起Makefile,可能有人会觉得它已经过时了,毕竟现在有比它更好的工具,比如CMake,XMake,Meson等等,但是在Linux下很多C/C++源码都是直接或者间接使用Makefile文件来编译项目的,可以说Makefile是基石。

另外,针对C++ 20的一些特性,像比较流行的CMake工具,目前支持还不完善,如果想要尝鲜C++ 20的一些新特性,比如Module,目前最好是使用Makefile比较方便。后面笔者会专门介绍C++ 20的Module使用。

微软官方出了一个VSCode的Makefile Tools插件,用于编译、调试、运行C/C++程序。

笔者以一个简单的示例来介绍它。

如果是Windows,则需要安装MSYS2 MinGW,然后在Windows下配置PATH环境变量,包含MinGW64的gcc以及MSYS2的make路径,比如:
G:\msys64\mingw64\binG:\msys64\usr\bin

在工作区编写一个C++文件, main.cc

#include <stdio.h>int main(int argc, char*argv[]) {printf("测试\n");return 0;}

再编写一个Makefile文件:

.PHONY: all cleanCC := gccCXX := g++CFLAGS :=CXXFLAGS := -gdwarf-4Target := mainSRCS += $(wildcard *.cc)OBJS := $(patsubst %.cc, %.o, ${SRCS})all: $(Target)$(Target): $(OBJS)$(CXX) $(CXXFLAGS) $(OBJS) -o $@%.o: %.cc$(CXX) $(CXXFLAGS) -c $? -o $@clean:rm -rf $(OBJS) $(Target)

在工作区编写的了Makefile后,VSCode输出窗口Makefile Tools会有一系列日志:

No current configuration is defined in the workspace state. Assuming 'Default'.No target defined in the workspace state. Assuming 'Default'.Dropping various extension output files at c:\Users\admin\AppData\Roaming\Code\User\workspaceStorage\9d677e46e192d47afa37529f2e89bbe9\ms-vscode.makefile-toolsLogging level: NormalConfigurations cached at c:\Users\admin\AppData\Roaming\Code\User\workspaceStorage\9d677e46e192d47afa37529f2e89bbe9\ms-vscode.makefile-tools\configurationCache.logNo path to the makefile is defined in the settings file.No folder path to the makefile is defined in the settings file.Always pre-configure: falseAlways post-configure: falseDry-run switches: '--always-make', '--keep-going', '--print-directory'No current launch configuration is set in the workspace state.Default launch configuration: MIMode = undefined,                    miDebuggerPath = undefined,                    stopAtEntry = undefined,                    symbolSearchPath = undefinedConfigure on open: trueConfigure on edit: trueConfigure after command: trueOnly .PHONY targets: falseSave before build or configure: trueBuild before launch: trueClear output before build: trueIgnore directory commands: truecompile_commands.json path: nullDeduced command 'make.exe ' for configuration "Default"The Makefile Tools extension process of configuring your project is about to run 'make --dry-run' in order to parse the output for useful information. This is needed to calculate accurate IntelliSense and targets information. Although in general 'make --dry-run' only lists (without executing) the operations 'make' would do in the current context, it is still possible some code to be executed, like $(shell) syntax in the makefile or recursive invocations of the $(MAKE) variable.If you don't feel comfortable allowing this configure process and 'make --dry-run' to be invoked by the extension, you can chose a recent full, clean, verbose and up-to-date build log as an alternative, via the setting 'makefile.buildLog'. 

并且会弹出对话框:

在这里插入图片描述

点“确定”即可。

此时Makefile面板如下:
在这里插入图片描述

我们需要设置生成目标启动目标,在其后点笔那个的图标按钮,则会弹出所有目标,生成目标如下,选择all

在这里插入图片描述

启动目标如下,只有一个,选择它:
在这里插入图片描述
设置好后,如下图:
在这里插入图片描述
右上边有三个按钮,分别是编译调试运行
需要注意的是编译是使用的VSCode的shell类型任务执行的,如果如解决Windows下VSCode控制台乱码问题中所述,添加了VSCode的控制台启动参数,则可能会失败,需要去掉参数再执行,结果如下:

在这里插入图片描述
调试按钮,VSCode会使用cppdbg引擎启动gdb进行调试,UTF8中文可以正常显示。
在这里插入图片描述

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-24/161912.html,文章来源:网络cs,作者:付梓,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论