推广网站加盟,做一个内容网站多少钱,百度能收录的免费网站,html网页设计介绍提起Makefile#xff0c;可能有人会觉得它已经过时了#xff0c;毕竟现在有比它更好的工具#xff0c;比如CMake#xff0c;XMake#xff0c;Meson等等#xff0c;但是在Linux下很多C/C源码都是直接或者间接使用Makefile文件来编译项目的#xff0c;可以说Makefile是基石…提起Makefile可能有人会觉得它已经过时了毕竟现在有比它更好的工具比如CMakeXMakeMeson等等但是在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\bin和G:\msys64\usr\bin
在工作区编写一个C文件 main.cc
#include stdio.hint main(int argc, char*argv[]) {printf(测试\n);return 0;
}
再编写一个Makefile文件
.PHONY: all cleanCC : gcc
CXX : g
CFLAGS :
CXXFLAGS : -gdwarf-4
Target : 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-tools
Logging level: Normal
Configurations cached at c:\Users\admin\AppData\Roaming\Code\User\workspaceStorage\9d677e46e192d47afa37529f2e89bbe9\ms-vscode.makefile-tools\configurationCache.log
No 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: false
Always post-configure: false
Dry-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 undefined
Configure on open: true
Configure on edit: true
Configure after command: true
Only .PHONY targets: false
Save before build or configure: true
Build before launch: true
Clear output before build: true
Ignore directory commands: true
compile_commands.json path: null
Deduced 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 dont 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中文可以正常显示。