主要前提内容参照前文:

Linux环境下配置vscode的C/C++编译环境

===========================================================

代码结构:

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方式)的更多相关文章

  1. WIN7环境下配置vscode c++环境

    目录 安装vscode 添加中文环境支持 添加c++支持 配置c++环境 安装MinGW 配置MinGW环境变量 配置vscode launch文件配置 task文件配置 可能出现的问题 安装vsco ...

  2. MinGW安装与环境变量配置和Sublime Text 2搭建C++编译环境

    MinGW安装与环境变量配置 从http://sourceforge.net/projects/mingw/下载MinGW,安装到D:\MinGW.工具集选择安装(之后还可以进行安装卸载):至少需要安 ...

  3. Win10环境下配置VScode的C++编译环境

    写前感想:前前后后,折腾好几次,最后还是在学长安利下,开始入坑vscode了.原因一个是小巧,还有就是vs新建工程码题的方式太消耗内存了,基本每个项目就是以MB为单位计算的,然后希望用这篇文章记录自己 ...

  4. Window环境下配置MySQL 5.6的主从复制

    原文:Window环境下配置MySQL 5.6的主从复制 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 2. ...

  5. 在Linux虚拟机下配置jdk的环境变量

    1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  6. 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

    上一篇讲了PHP服务器的基本配置,我们安装了apache,php,还有MySQL,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服 ...

  7. Linux环境下使用VSCode编译makefile文件的注意事项

    Linux环境下使用VSCode编译makefile文件的注意事项 首先安装C/C++的两个依赖 在debug,launch会自动的生成下方的launch.json launch.json { // ...

  8. 【经验之谈】Windows环境下配置WordPress

    前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...

  9. Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境

    原文 Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境 很多人喜欢用linux搭建php网页语言运行环境,但由于linux高度自定义化,经常需要root运行命令,略显高端,相对应的微软 ...

  10. Ubuntu环境下配置GCC

    Ubuntu网络环境下安装GCC及其头文件步骤: 1.Ubuntu环境下配置GCC 刚装好的GCC什么都不能编译,因为没有一些必须的头文件,所以要安装build-essential,安装了这个包会安装 ...

随机推荐

  1. asp.net中gridview隐藏一列并且使用这列数据的方法

    方法一:在RowCreated事件中添加如下代码可隐藏此列,使用this.grdView.Rows[index].Cells[1].Text获取值,index为行号. 1 protected void ...

  2. NFS练习

    NFS练习题 1.开放/nfs/share目录,提供给 任意用户 只读(/etc/exports ro) 查询 1.任意客户端2.任意的用户​ 服务端 showmout exportfs system ...

  3. 支付宝spi接口设计验签和返回结果加签注意点,支付宝使用JSONObject对象

    支付宝spi接口设计验签和返回结果加签注意点,支付宝使用JSONObject对象 SPI 三方服务接入指南https://opendocs.alipay.com/isv/spiforisv 服务端实现 ...

  4. redis 锁

    demo1 public ErrorCode initDemo1(@RequestParam("orderNo") String orderNo) throws IOExcepti ...

  5. Java验证集合空或验证对象空的方法

    import java.util.ArrayList; import java.util.List; import java.util.Objects; import org.springframew ...

  6. 使用python解析nginx日志

    性能测试时,需使用生产环境各接口请求比例分配接口请求比,nginx统计脚本如下: import re import pandas as pd import xlwt obj = re.compile( ...

  7. Nginx 静态站点配置不对导致301跳转的坑

    背景 是这样的,我们前端服务器统一的入口是 kong网关 ,我们还有一个Nginx静态资源站点:static.mysite.com,根配置如下: location / { root /home/web ...

  8. Kubernetes(三)实战入门

    实战入门 本章介绍如何在kubernetes集群中部署一个nginx服务,并能够对其进行访问. 1. Namespace Namespace主要作用是实现多套环境的资源隔离或者多租户的资源隔离. 默认 ...

  9. .Net Core 访问 appsettings.json

    1.添加 NuGet 包 Microsoft.Extensions.Configuration 2.通过注入获取 Configuration 注意:注入获取的必须提前在 StartUp 里面提前注册 ...

  10. OpenWrt中的LuCi和Lua一些总结

    Lua.LuCi Lua是一种小巧的脚本语言,和Python一样,Lua脚本的运行需要Lua解释器: UCI(Unified Configuration Interface)是OpenWrt实现所有系 ...