Vscode(WSL)下配置快速运行C++的makefile与快捷键

前言

 最近把Makefile知识补上了。虽然现在项目都是使用cmakexmake管理了,但Makefile还是要学学的,因为cmakexmake里面使用的概念、变量都是Makefile中出现过的,有助于理解高级工具。

流程演示

作者的目录是这样的,
文件结构

  1. 进入到小项目目录内在这里插入图片描述
  2. 在当前目录下按F6,自动编译运行在这里插入图片描述
    需要在小项目目录内才可以按F6编译运行。 即必须要能在命令行中访问到.cpp文件。
  3. 生成的可执行文件在小项目目录的build下

在这里插入图片描述

配置编写

 很简单的配置,这里毕竟也只是在写写Leetcode、试试语言特性的时候会用到。

过程描述及代码:

  1. 情况1:取当前目录(pwd)下所有.cpp文件名,转换为.o文件名
  2. 情况2:若条件编译参数ifeq ($(FILE_NUM),single)成立,则取最新的.cpp文件名,只编译这一个文件
  3. 进入$(TARGET):$(OBJS)
  4. 显示编译时间,判断build目录是否已存在,不存在则创建
  5. 使用系统编译器编译.o依赖,再使用.o依赖生成可执行文件
  6. 清除中间过程生成的.o依赖
  7. 运行该可执行文件
#作者的默认配置
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的编译运行快捷键。

  1. 在Vscode内,按Ctrl+Shift+P,输入“打开键盘”
    打开键盘
  2. 在文件末尾加入配置
    //编译目录下所有.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" //修改为你的路径
        },
    },
    
  3. 保存就ok了

快速到达当前文件目录

同上,加入快捷键就好。新建一个终端,并将pwd设置为当前打开的文件目录。

{
        "key": "alt+f6",
        "command": "workbench.action.terminal.newWithCwd",
        "args": {
            "cwd": "${fileDirname}"
        }
},

好了,配置完成。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值