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,安装了这个包会安装 ...
随机推荐
- 透过 node-exporter 彻底弄懂机器监控:01. node-exporter 框架讲解
前言 Prometheus 生态里有很多采集器负责各类监控数据的采集,其中使用最广泛的,显然是 node-exporter,负责 Linux.BSD 等系统的常规监控指标的采集,比如 CPU.内存.硬 ...
- vue bus传参
新建一个js文件,命名为bus.js.bus.js文件的内容为: import Vue from 'vue' const bus = new Vue() export default bus 页面de ...
- C# SM2算法 加密,解密,签名,验签
最近时间在整SM2算法,在网上看到不少代码,基本都是使用BouncyCastle库,现在这个版本算比较好的拿来分享给大家. 首先引入包 Portable.BouncyCastle 完整代码见Gitee ...
- 【资料分享】全志科技T507工业核心板硬件说明书(上)
目 录 前言 1硬件资源 1.1CPU 1.2ROM 1.3RAM 1.4时钟系统 1.5电源 1.6LED 1.7外设资源 2引脚说明 2.1引脚排列 2.2引脚定义 2.3内部引脚使用说明 ...
- Class 与 Style 如何动态绑定?
Class 可以通过对象语法和数组语法进行动态绑定: 对象语法: <div v-bind:class="{ active: isActive, 'text-danger': hasEr ...
- SpringBoot 解决跨域问题
今天遇到一个很神奇的问题,之前写的项目,后端跨域都处理好的,按部就班使用原来的方式,前后端都开发完之后,部署本地后,跨域没起效,一脸懵逼,然后使用公司另外一个同事的跨域解决方案,具体我也没深入研究到底 ...
- Mybatis 总结ResultMap的复杂对象查询
association:映射的是一个POJO类,处理一对一的关联关系 collection:映射的一个集合列表,处理的是一对多的关联关系 模版 <!--column不做限制,可以为任意表的字段, ...
- PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践
大家好,我是码农先森. 我之前待过一个做 ToB 业务的公司,主要是研发以会员为中心的 SaaS 平台,其中涉及的子系统有会员系统.积分系统.营销系统等.在这个 SaaS 平台中有一个重要的角色「租户 ...
- [oeasy]python0045_转化为10进制数_int_integrate_integer_entire_整数
转化为10进制 回忆上次内容 上这次总结了四种进制 函数名 对应单词 进制类型 数字事例 前缀 bin() binary 2 0b1100001 0b oct() octal 8 0o141 0o h ...
- [oeasy]python0035_ 整合shell编程_循环_延迟_清屏
整合shell编程 回忆上次内容 用\r 可以让输出位置回到行首 原位刷新时间 如果想要的是大字符效果 需要使用 figlet 但同时还希望能刷新 编辑 这可能吗? 建立脚本 我们得熟悉一下s ...