makefile.mk

#makefile.mk 公共头文件
ifndef TARGET
# /root/make/src/test_include
# notdir
TARGET:=$(notdir $(shell pwd)) #test_include
endif
CXXFLAGS:=$(CXXFLAGS) -g -std=c++11 -Iinclude#g++ -c 编译 自动推导
LDFLAGS:=$(LDFLAGS) #链接 可用于自动推导
LDLIBS:=$(LDLIBS) -lpthread #链接库 用于自动推导
#输出路径 /usr/bin /usr/lib /usr/include
OUT:=/usr SRCS:=$(wildcard *.cpp *.cc *.c) #test_include.cpp testcpp.cc testc.c
OBJS:=$(patsubst %.cpp,%.o,$(SRCS)) #test_include.o testcpp.cc testc.c
OBJS:=$(patsubst %.cc,%.o,$(OBJS))
OBJS:=$(patsubst %.c,%.o,$(OBJS)) #test_include.o testcpp.o testc.o #区分动态库 静态库 和执行程序
ifeq ($(LIBTYPE),.so) #动态库 $(strip $(TARGET)) 去掉前后空格\t
TARGET:=lib$(strip $(TARGET)).so
LDLIBS:=$(LDLIBS) -shared
CXXFLAGS:=$(CXXFLAGS) -fPIC
endif
ifeq ($(LIBTYPE),.a) #静态库
TARGET:=lib$(strip $(TARGET)).a
endif #启动脚本
STARTSH=start_$(TARGET)
#停止脚本
STOPSH=stop_$(TARGET) # $(1) TARGET ,$(2) OUT
define Install
@echo "begin install "$(1)
-mkdir -p $(2)
cp $(1) $(2)
@echo "end install "$(1)
endef #生成启动停止脚本,并安装到$(OUT)
# $(1) TARGET ,$(2) OUT,$(3) $PARAS
define InstallSH
@echo "begin make start shell"
echo "nohup $(1) $(3) &" > $(STARTSH)
chmod +x $(STARTSH)
cp $(STARTSH) $(2)
@echo "end make start shell" @echo "begin make stop shell"
echo killall $(1) >$(STOPSH)
cp $(STOPSH) $(2)
@echo "end make stop shell"
endef
all:depend $(TARGET)
depend:
@$(CXX) $(CXXFLAGS) -MM $(SRCS) >.depend
-include .depend #目标生成
$(TARGET):$(OBJS)
ifeq ($(LIBTYPE),.a) #静态库
$(AR) -cvr $@ $^
else
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LDLIBS)
endif #安装程序和库
install:$(TARGET)
ifdef LIBTYPE
$(call Install,$(TARGET),$(OUT)/lib)
$(call Install,*.h,$(OUT)/include)
else
$(call Install,$(TARGET),$(OUT)/bin)
$(call InstallSH,$(TARGET),$(OUT)/bin)
endif #卸载程序和库
uninstall:clean
ifndef LIBTYPE
-$(STOPSH)
$(RM) $(OUT)/bin/$(TARGET)
$(RM) $(OUT)/bin/$(STARTSH)
$(RM) $(OUT)/bin/$(STOPSH)
else
$(RM) $(OUT)/lib/$(TARGET)
endif #rm -r test.o test
#目标清理
clean:
$(RM) $(OBJS) $(TARGET) .depend .PHONY: clean uninstall install all depend #伪目标 没有对应的文件

makefile

#sCXXFLAGS:=-Iinclude
# LDFLAGS:=-L../xthread -L../xcom
# LDLIBS:=-lxthread -lxcom
include makefile.mk #统一的makefile头

tasks.json

{
"tasks": [
{
"label": "build_debug", // 任务名称,调试时可以指定不用任务进行处理
"type": "shell", // [shell, process], 定义任务作为作为进程运行还是在shell中作为命令运行; (测试没看出啥区别...)
"command": "make all", // 要执行的命令,可以是外部程序或者是shell命令。这里使用make编译命令
"problemMatcher": [ // 要使用的问题匹配程序。可以是一个字符串或一个问题匹配程序定义,也可以是一个字符串数组和多个问题匹配程序。
"$gcc"
],
"group": { // 定义此任务属于的执行组。它支持 "build" 以将其添加到生成组,也支持 "test" 以将其添加到测试组。
"kind": "build",
"isDefault": true
},
"presentation": { // 配置用于显示任务输出并读取其输入的面板
"echo": true, // 控制是否将执行的命令显示到面板中。默认值为“true”。
"reveal": "always", // 控制运行任务的终端是否显示。可按选项 "revealProblems" 进行替代。默认设置为“始终”。
"focus": false, // 控制面板是否获取焦点。默认值为“false”。如果设置为“true”,面板也会显示。
"panel": "shared", // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板。
"showReuseMessage": true, // 控制是否显示“终端将被任务重用,按任意键关闭”提示
"clear": false // 运行前清屏
}
},
{
"label": "build_release",
"type": "shell",
"command": "make all",
"args": ["CFLAGS = -O2"], // 编译参数, 替换makefile中让CFLAGS字段
"dependsOn":["build_clean"], // 指定依赖让task, 即会先执行build_clean,然后再执行build_release
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "build_clean",
"type": "shell",
"command": "make",
"args": ["clean"], // 相当于执行 make clean命令
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}

launch.json

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [ {
"name": "(gdb) Lauch", // 启动配置的下拉菜单中显示的名称
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/Demo1", // 将要进行调试的程序的路径, workspaceFolder指当前工作目录(即vscode打开的目录:hello),main指的是makefile编译后目标码(可执行程序)的名字
"args": [], // 程序启动的参数
"stopAtEntry": false, // 设置true时,程序将暂停在程序入口处, 即main()的第一个{位置
"cwd": "${workspaceFolder}", // 调试时的工作目录
"environment": [],
"externalConsole": false, // 调试时,是否显示控制台串口
"MIMode": "gdb", // 调试命令
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "build_debug", // 使用哪个任务进行编译,需要指定tasks.json中的一个,这里选择用build_debug任务进行编译
"miDebuggerPath": "/usr/bin/gdb" // 调试命令的路径
}
]
}

vscode 开发c++的更多相关文章

  1. .Net Core Linux centos7行—vscode开发,linux部署运行

    前面搭建好啦linux运行环境,下面搭建windows下的开发环境.并完成调试 参考地址:https://www.microsoft.com/net/core#windows. 按照步骤来就好.安装. ...

  2. vscode 开发.net core 从安装到部署 教程详解

    一:环境准备: windows系统需要 win7 sp1 / windows 8  / windows 2008 r2 sp1 / windows10: 其他版本的windows系统在安装.NET C ...

  3. 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(1)

    最近使用vscode比较多. 学习了一下如何在mac上使用vscode开发asp.netcore项目. 这里是我写的关于vscode的一篇文章: https://www.cnblogs.com/cgz ...

  4. 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(3)

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 由于 ...

  5. 使用vscode开发调试.net core应用程序并部署到Linux跨平台

    使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发及调试. https://github.com/aspnet/ ...

  6. vsCode 开发微信小程序插件

    用 vsCode 开发微信小程序可以配置以下插件,让开发更美好: 1. vscode weapp api 2. vscode wxml 3. vscode-wechat 4. Easy WXLESS ...

  7. 用vscode开发vue应用[转]

    https://segmentfault.com/a/1190000019055976 现在用VSCode开发Vue.js应用几乎已经是前端的标配了,但很多时候我们看到的代码混乱不堪,作为一个前端工程 ...

  8. 【.NET Core项目实战-统一认证平台】基于jackcao博客使用VSCode开发及感悟One搭建开发环境

    原博客系列文章链接:https://www.cnblogs.com/jackcao/ 金焰的世界 感谢博主无私的奉献,感谢博主幼儿班的教学 基于jackcao博客使用VsCode开发及感悟One搭建开 ...

  9. 用vscode开发vue应用

    阅读 3237 收藏 205 2019-05-02 原文链接:segmentfault.com 云服务器 1 核 2G , 9元/月 ,买十送二,99/年!!!快来上车!developer.huawe ...

  10. 使用VSCode开发Flutter

    前言 为什么使用VSCode? flutter官方推荐的编辑器有IDEA/Android Studio和VSCode, 之前开发Flutter用的IDEA, 不过IDEA始终比较重,于是换用VSCod ...

随机推荐

  1. 如何自定义调整bootstrap的模态框大小

    背景 项目遇到一个需求,一个大表格放到模态框中,总是会出现撑开的效果,换了文档最大的modal-lg样式还不能解决,原因就是官方不支持更大号的模态框,需要自定义. 经过尝试理解,总结出调整模态框大小通 ...

  2. Windows下jdk安装与卸载-超详细的图文教程

    jdk安装 下载jdk 由于现在主流就是jdk1.8,所以这里就下载jdk1.8进行演示.官方下载地址:https://www.oracle.com/java/technologies/downloa ...

  3. [OpenCV实战]33 使用OpenCV进行Hough变换

    目录 1 什么是霍夫变换 1.1 应用霍夫变换以检测图像中的线条 1.2 累加器 1.3 线条检测 1.4 圆环的检测 2 代码 3 参考 1 什么是霍夫变换 霍夫变换是用于检测图像中的简单形状(诸如 ...

  4. 说一下三种jar包在Linux的启动方式

    最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,特在此分享一下. 这里默认要启动的jar包为demo-0.0.1-SNAPSHOT.jar 第一种 ...

  5. RocketMQ消息短暂而又精彩的一生

    大家好,我是三友~~ 这篇文章我准备来聊一聊RocketMQ消息的一生. 不知你是否跟我一样,在使用RocketMQ的时候也有很多的疑惑: 消息是如何发送的,队列是如何选择的? 消息是如何存储的,是如 ...

  6. [cocos2d-x]关于3.x的触摸机制

    触摸机制的概念 通过对要监听触摸的节点进行注册,然后自定义相应的触摸函数,由事件监听器实现对触摸的监听并且实现相应的响应动作. 触摸的分类 单点触摸 下面是实现单点触摸监听的步骤: //第一步:先创建 ...

  7. Postman实现UI自动化测试

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/1db4fa44.html 你好,我是测试蔡坨坨. 看到这篇文章的标题,是不是有小伙伴会感到惊讶呢? Postman不是做接口 ...

  8. 02-Sed语法介绍

    1 Sed语法介绍 介绍Sed支持的基本命令及其命令行语法,Sed可以通过以下两种形式进行调用: 学习sed命令使用之前,需要掌握正则表达式的用法. sed [-n] [-e] 'commands' ...

  9. vue3+quasar+capacitor开发多平台项目,使用quasar改变主题背景

    quasar的样式和其他的框架修改不太一样,需要我们使用动态的方式来进行变更,一般来说有两种方案进行主题修改 方案一: 修改样式所需文档: 这里是样式修改的说明:https://quasar.dev/ ...

  10. BOM操作、DOM操作、jQuery类库

    BOM操作.DOM操作.jQuery类库 一.BOM操作 BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行对话 1.window对象 浏 ...