Vscode(WSL)下配置快速运行C++的makefile与快捷键-创新互联
前言
分享标题:Vscode(WSL)下配置快速运行C++的makefile与快捷键-创新互联
链接URL:http://ybzwz.com/article/hdesp.html
最近把Makefile
知识补上了。虽然现在项目都是使用cmake
、xmake
管理了,但Makefile
还是要学学的,因为cmake
、xmake
里面使用的概念、变量都是Makefile
中出现过的,有助于理解高级工具。
作者的目录是这样的,
- 进入到小项目目录内
- 在当前目录下按F6,自动编译运行
需要在小项目目录内才可以按F6编译运行。即必须要能在命令行中访问到.cpp文件。 - 生成的可执行文件在小项目目录的build下
很简单的配置,这里毕竟也只是在写写Leetcode、试试语言特性的时候会用到。
过程描述及代码:- 情况1:取当前目录(pwd)下所有.cpp文件名,转换为.o文件名
- 情况2:若条件编译参数
ifeq ($(FILE_NUM),single)
成立,则取最新的.cpp文件名,只编译这一个文件 - 进入
$(TARGET):$(OBJS)
中 - 显示编译时间,判断build目录是否已存在,不存在则创建
- 使用系统编译器编译.o依赖,再使用.o依赖生成可执行文件
- 清除中间过程生成的.o依赖
- 运行该可执行文件
#作者的默认配置
TARGET = main
OBJS:= $(patsubst %.cpp,%.o,$(wildcard ./*.cpp)) #当前路径的.cpp转换为.o
NEWEST_FILE:=$(patsubst %.cpp,%.o,$(shell ls -lt | grep -Eo "\b\w+\.(cpp|c)" | head -n 1)) #获取最新的文件
ifeq ($(FILE_NUM),single)
OBJS:= $(NEWEST_FILE)
endif
LDFLAGS:=
LIBS:=
CXXFLAGS:= -std=c++17 -O2 -m64
BUILD_EXIST = $(shell if [ -d build ]; then echo "exist"; else echo "noexist"; fi)
COMPILE_TIME = $(shell date +"%Y-%m-%d %H:%M:%S")
#MAKEFILE_DIR:= $(abspath $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))) #makefile的位置
$(TARGET):$(OBJS)
-@echo ""
-@echo "compile_time: $(COMPILE_TIME)"
ifneq (exist,$(BUILD_EXIST))
@$(shell mkdir build)
@echo "build目录不存在,已自动生成"
endif
-@echo ""
-$(CXX) $^ $(CXXFLAGS) -o ./build/$@
@$(RM) $(OBJS)
@echo "----------------------Output----------------------"
@./build/$@
#清理
clean:
$(RM) ./build/$(TARGET) $(OBJS)
.PHONY:clean
快捷键设置Makefile
文件已经写好了,现在配置Vscode的编译运行快捷键。
- 在Vscode内,按
Ctrl+Shift+P
,输入“打开键盘” - 在文件末尾加入配置
//编译目录下所有.cpp文件 {"key": "f6", //可以自己修改快捷键 "command": "workbench.action.terminal.sendSequence", "args": {"text": "make -f /home/roya/workSpace/Makefile clean && make -f /home/roya/workSpace/Makefile\r" //修改为你的路径 } }, //只单独编译一个文件 {"key": "Ctrl+f6", "command": "workbench.action.terminal.sendSequence", "args": {"text": "make -f /home/roya/workSpace/Makefile clean && make -f /home/roya/workSpace/Makefile FILE_NUM=single\r" //修改为你的路径 }, },
- 保存就ok了
同上,加入快捷键就好。新建一个终端,并将pwd
设置为当前打开的文件目录。
{"key": "alt+f6",
"command": "workbench.action.terminal.newWithCwd",
"args": {"cwd": "${fileDirname}"
}
},
好了,配置完成。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享标题:Vscode(WSL)下配置快速运行C++的makefile与快捷键-创新互联
链接URL:http://ybzwz.com/article/hdesp.html