Linux环境VSCode下多目录C++项目最优编译方案是什么?
解决方案
最优方案是使用Makefile实现自动化编译,搭配VSCode内置任务功能可实现一键编译,无需手动输入长命令,同时支持增量编译,比纯手动编译效率高很多。
前置修复
你当前的main.cpp缺少Greeting类的头文件引用,编译前需要在src/proj-runner/main.cpp开头添加一行代码:
#include "../proj-class/class.h"
步骤1:编写Makefile
在项目根目录(即src文件夹的同级目录)新建名为Makefile的文件,内容如下:
# 指定编译器 CXX = g++ # 编译参数:开启调试信息、指定头文件搜索路径、开启代码警告 CXXFLAGS = -g -I./src/proj-class -Wall # 自定义生成的可执行文件名 TARGET = myapp # 所有参与编译的源文件路径 SRCS = ./src/proj-runner/main.cpp ./src/proj-class/class.cpp # 默认编译目标 all: $(TARGET) # 生成可执行文件的规则 $(TARGET): $(SRCS) $(CXX) $(CXXFLAGS) $(SRCS) -o $(TARGET) # 清理编译产物的规则 clean: rm -f $(TARGET)
配置说明:
- 后续新增源文件只要在
SRCS配置项后追加对应文件路径即可 - 执行
make命令即可自动完成全量/增量编译,修改单个文件后只会重编改动部分 - 执行
make clean命令即可快速删除生成的可执行文件
步骤2:配置VSCode一键编译
如果不想每次手动输入make命令,可配置VSCode默认构建任务,实现快捷键触发编译:
- 在项目根目录新建
.vscode文件夹,在文件夹内新建tasks.json文件 - 粘贴如下配置内容:
{ "version": "2.0.0", "tasks": [ { "label": "编译项目", "type": "shell", "command": "make", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] }, { "label": "清理编译产物", "type": "shell", "command": "make clean" } ] }
- 配置完成后按下快捷键
Ctrl+Shift+B即可自动触发编译,编译错误会直接在VSCode问题面板展示,无需切换终端操作。
内容的提问来源于stack exchange,提问作者Ben Alan
相关产品推荐
相关产品推荐

