Linux环境下配置vscode的C/C++ 的make编译环境(编写makefile方式)
主要前提内容参照前文:
===========================================================
代码结构:

main.cpp 代码:
#include <iostream>
#include "swap.h" int main() {
Swap myswap(10, 20);
myswap.printInfo();
myswap.run();
myswap.printInfo();
cout << "After swap" << endl;
return 0;
}
swap.cpp 代码:
#include "swap.h"
void Swap::run(){
int temp;
temp = _a;
_a = _b;
_b = temp;
}
void Swap::printInfo()
{
cout << "_a = " << _a << endl;
cout << "_b = " << _b << endl;
}
swap.h 代码:
#pragma once
#include<iostream>
using namespace std;
class Swap
{
public:
Swap(int a, int b){
this->_a = a;
this->_b = b;
}
void run();
void printInfo(); private:
int _a;
int _b;
};
======================================
配置文件:
.vscode/tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++-7 生成活动文件",
"command": "/usr/bin/g++-7",
"args": [
"-fdiagnostics-color=always",
"-g",
"${workspaceFolder}/main.cpp",
"${workspaceFolder}/src/swap.cpp",
"-o",
"${workspaceFolder}/mainX",
"-I",
"${workspaceFolder}/include"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$g++"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
{
"type": "shell",
"label": "make",
"command": "make",
"options": {
"cwd": "${workspaceFolder}",
},
"detail": "make调试器生成的任务。"
}
],
"version": "2.0.0"
}
.vscode/launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++-7 - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/mainX",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "make",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
Makefile 文件内容:
# C compiler options
CC = g++ # C compiler flags
CFLAGS = -g -O2 -ggdb3
#CFLAGS = -g -O2 CLEAN = clean #
RELEASE = mainX
DEBUG = mainX.debug
LIBS =
INC = include # Make everything
#all: $(RELEASE) $(DEBUG)
all: $(RELEASE) $(CLEAN) # Make the application
$(RELEASE): main.o swap.o
$(CC) -o build/$(RELEASE) $(CFLAGS) src/main.o src/swap.o main.o: main.cpp
$(CC) -o src/main.o $(CFLAGS) -c main.cpp -I $(INC) swap.o: src/swap.cpp
$(CC) -o src/swap.o $(CFLAGS) -c src/swap.cpp -I $(INC) # Clean all object files...
clean:
rm src/*.o
# rm $(RELEASE)
# rm $(DEBUG)
给出更简洁的Makefile :
CC = gcc -I include
CXX = g++ -I include CFLAGS = -g -O2 -ggdb3
#CFLAGS = -g -O2 CLEAN = clean
BUILD = build
SRC = $(shell find -name '*.cpp')
OBJECT = $(SRC:.cpp=.o) #
RELEASE = mainX
DEBUG = mainX.debug
LIBS =
INC = -I include # Make everything
all: $(RELEASE) $(CLEAN) # Make the application
$(RELEASE): $(OBJECT)
$(CXX) -o $@ $^ $(CFLAGS)
# @echo $(CXX)
# @echo $(SRC)
# @echo $(OBJECT)
@echo $@
@echo $<
@echo $^
@echo $(@D)
@echo $(<D)
@echo $(^D)
@echo $(@F)
@echo $(<F)
@echo $(^F) $(OBJECT): # Clean all object files...
.PHONY: clean
clean:
rm $(OBJECT)
# rm $(RELEASE)
# rm $(DEBUG)
================================================
主要关键点,配置tasks.json中的make任务:
核心部分:
{
"type": "shell",
"label": "make",
"command": "make",
"options": {
"cwd": "${workspaceFolder}",
},
"detail": "make调试器生成的任务。"
}
其中最为关键的是 make 任务的 type要改为 shell ,否则会报错。
==========================================
Linux环境下配置vscode的C/C++ 的make编译环境(编写makefile方式)的更多相关文章
- WIN7环境下配置vscode c++环境
目录 安装vscode 添加中文环境支持 添加c++支持 配置c++环境 安装MinGW 配置MinGW环境变量 配置vscode launch文件配置 task文件配置 可能出现的问题 安装vsco ...
- MinGW安装与环境变量配置和Sublime Text 2搭建C++编译环境
MinGW安装与环境变量配置 从http://sourceforge.net/projects/mingw/下载MinGW,安装到D:\MinGW.工具集选择安装(之后还可以进行安装卸载):至少需要安 ...
- Win10环境下配置VScode的C++编译环境
写前感想:前前后后,折腾好几次,最后还是在学长安利下,开始入坑vscode了.原因一个是小巧,还有就是vs新建工程码题的方式太消耗内存了,基本每个项目就是以MB为单位计算的,然后希望用这篇文章记录自己 ...
- Window环境下配置MySQL 5.6的主从复制
原文:Window环境下配置MySQL 5.6的主从复制 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 2. ...
- 在Linux虚拟机下配置jdk的环境变量
1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
- 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇
上一篇讲了PHP服务器的基本配置,我们安装了apache,php,还有MySQL,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服 ...
- Linux环境下使用VSCode编译makefile文件的注意事项
Linux环境下使用VSCode编译makefile文件的注意事项 首先安装C/C++的两个依赖 在debug,launch会自动的生成下方的launch.json launch.json { // ...
- 【经验之谈】Windows环境下配置WordPress
前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...
- Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境
原文 Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境 很多人喜欢用linux搭建php网页语言运行环境,但由于linux高度自定义化,经常需要root运行命令,略显高端,相对应的微软 ...
- Ubuntu环境下配置GCC
Ubuntu网络环境下安装GCC及其头文件步骤: 1.Ubuntu环境下配置GCC 刚装好的GCC什么都不能编译,因为没有一些必须的头文件,所以要安装build-essential,安装了这个包会安装 ...
随机推荐
- k8s配置文件管理
1.为什么要用configMap ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件. 通过ConfigMap可以方便的 ...
- Idea克隆检出git项目
1.我这里假设你已经安装好了Idea和Git环境 2. .
- uniapp 开发微信小程序 使用微信小程序一键登录
研究了一天的uniapp开发微信小程序的第一步,登录! 刚开始使用uni.getUserInfo函数No!不行,无法运行,研究文档发现是这个函数被微信小程序团队给禁用了,OK换! 后来换成了uni.g ...
- 你不知道的 CSS 之包含块
你不知道的 CSS 之包含块 一说到 CSS 盒模型,这是很多小伙伴耳熟能详的知识,甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别. 但是一说到 CSS ...
- 常用RAID级别简介
RAID不同等级的两个目标: 1. 增加数据可靠性 2. 增加存储的读写性能 RAID级别: RAID-0: 是以条带的形式将数据均匀分布在阵列的各个磁盘上 优点:读写性能高,不存在校验,不会 ...
- Freertos学习:06-任务通知
--- title: rtos-freertos-06-task-notify date: 2020-06-22 15:49:29 categories: tags: - ipc - freertos ...
- C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏
前言 今天大姚给大家分享一款由C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏:SeeSharpSnake. 项目特点 该仓库中的项目文件和脚本可以用多种不同的配置构建相同的游戏,每个配置生成的输出大 ...
- WPF网格类型像素着色器
由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格 使用cei ...
- 3568F-视频开发案例
- C#中?.、??、?:、及?等符号用途
1.可空类型修饰符(?) 众所周知,在C#中引用类型可以使用一个null引用来表示一个不存在的值,比如 string str = null 是正确的: 但是值类型却不能为空,比如 int k = ...