Makefile模板(取自vscode)

2023-05-16

文章目录

  • Makefile模板
    • vscode插件:单一目标
    • 编译多个目标

Makefile模板

vscode插件:单一目标

最近在学习Makefile写法,但是总觉得自己写的太烂了,找到了vscode一个插件C/C++ Project Generator产生的Makefile,感觉很清晰。

CC		:= g++
C_FLAGS := -std=c++17 -Wall -Wextra

BIN		:= bin
SRC		:= src
INCLUDE	:= include
LIB		:= lib

LIBRARIES	:=

EXECUTABLE	:= main

all: $(BIN)/$(EXECUTABLE)

clean:
	$(RM) $(BIN)/$(EXECUTABLE)

run: all
	./$(BIN)/$(EXECUTABLE)

$(BIN)/$(EXECUTABLE): $(SRC)/*
	$(CC) $(C_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)

以上代码均来自vscode插件C/C++ Project Generator

编译多个目标

下面的makefile可以编译的情景是:每个目标都有且只有一个依赖文件,且依赖文件为.h文件(函数实现也在.h中)。但是这不是一种好的项目组织方式。

CC		:= g++
C_FLAGS := -std=c++17 -Wall -Wextra

BIN		:= bin
SRC		:= src
INCLUDE	:= include
LIB		:= lib

LIBRARIES	:=

CPP_SRC = $(wildcard $(SRC)/*.cpp)
EXECUTABLE = $(patsubst %.cpp, %, $(CPP_SRC))

all: $(EXECUTABLE)

clean:
	$(RM) $(BIN)/$(EXECUTABLE)

run: all
	./$(BIN)/$(EXECUTABLE)

$(EXECUTABLE): $(SRC)/%.cpp
	$(CC) $(C_FLAGS) -I$(INCLUDE) -L$(LIB) $< -o $@ $(LIBRARIES)
	mv $@ $(BIN)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Makefile模板(取自vscode) 的相关文章

随机推荐

  • 文件的自定义包发送接收

    需求 对一个特定的文件进行分片发送 xff0c 构造数据包 xff0c 发送数据包 xff0c 接收数据包并提取有效数据 xff0c 对数据组合还原为原文件 设计 当前 xff0c 基于socket的网络编程已成为当今不可替代的编程方法 x
  • 阿里云服务器图形化界面

    https blog csdn net qq 43264202 article details 119578968
  • 安卓开放端口

    https blog csdn net weixin 39737831 article details 109965587
  • Ubuntu14.04 支持ESM

    https discourse ubuntu com t ubuntu advantage client 21788
  • 开启关闭ICMP

    echo request http www xoxxoo com index index article id 780 html redirect https blog csdn net weixin 39684454 article de
  • AD使用技巧

    AD快捷键 快捷键要处在英文模式的情况下才可以使用 xff1a AD测量快捷键 xff1a R AD对齐快捷键 xff1a A AD切换单位快捷键 xff1a Q AD改变栅格快捷键 xff1a G AD视图配置快捷键 xff1a L AD
  • 多传感器融合框架搭建

    架构 src include apps xff1a 节点文件 front end node cpp 前端节点data pretreat node cpp 数据预处理节点back end node cpp 后端节点loop closing n
  • 多传感器融合框架-ESKF

    架构 基本同图优化框架差不多 内容简述 数据预处理节点 订阅imu原始数据 xff0c gnss原始数据 xff0c 完成数据时间戳同步 点云畸变补偿发布如下消息 畸变补偿后的点云 synced cloudgnss里程计 synced gn
  • OpenCV笔记4.3

    C 43 43 读取目录下所有文件名称 1 包含头文件 96 span class token macro property span class token directive hash span span class token dir
  • 半小时内实现Esp32-Cam模型训练和图像识别

    Esp32 Cam图像识别 一 网页显示视频流1 Linux式例程2 MicroPython式例程步骤1 下载Thonny步骤2 烧录Esp32 Cam固件步骤3 运行相应代码 3 Arduino式例程步骤1 下载Arduino步骤2 安装
  • MANIFOLD 2-G开发 之 利用ROS话题编程实现UART1串口通讯

    目录 MANIFOLD 2 G开发笔记1 项目描述2 遇到的问题3 解决方案4 示例代码5 注意事项6 资源附件6 运行与调试 MANIFOLD 2 G开发笔记 本博客内容将记录MANIFOLD 2 G 开发过程中遇到的问题及解决方案 xf
  • ONOS源码笔记--机制

    app注册 private ApplicationId appId appId 61 coreService registerApplication 34 org onosproject fwd 34 注册应用 xff0c 一般在activ
  • git 本地分支与远程分支关联

    github上已经有master分支 和dev分支 在本地 git checkout b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 github上没有dev分支 git check
  • 做设计师还是程序员?一张图你就明白!

    平时大家相安无事 xff0c 可一旦项目滑了水 栽了坑 二重奏就开始没完没了的唱起来了 请看下图 xff1a 你的桌子是有什么 小编反手一摸 xff0c 还好小编的头发还再 你头发呢 xff1f 相信这里有很多学习java的朋友 xff0c
  • 【ROS】动态链接库(.so文件)的生成和调用

    ROS 动态链接库 xff08 so文件 xff09 的生成和使用 引言 xff11 生成so文件 xff12 调用so文件 xff13 运行结果结语 引言 由于项目有涉及到源代码是否交付的选项 xff0c 想着如果不交付源代码 xff0c
  • 用TortoiseGit删除git仓库中的文件/文件夹

    用TortoiseGit删除git仓库中的文件 文件夹 点击删除后出现弹框 xff0c 点击删除 删除后会显示移除一个文件 xff1b 想要还原可以在当前文件夹中右键选择TortoiseGit gt 还原 xff08 revert xff0
  • 02-Jetson Xavier NX 训练自己的yolov4-tiny模型并利用TensorRT完成部署(Python API)

    记录原因 xff1a 因前面完成了yolov4 tiny源码的部署 xff0c 可以跑到50FPS 但那个跑的是别人的模型 xff0c 可以识别80类 xff0c 但是在特定的情况下比如识别螺丝螺帽 xff0c 只需要两种 xff0c 在训
  • RPLIDAR在ROS下快速上手教程

    本教程由 臭皮匠机器人 原创 转载请注明出处 收到一个RPLidar后 xff0c 干的第一件事应该是先让雷达跑起来 xff0c 边做边学是最高效的 之前写了一篇在windows底下的 RPLIDAR十分钟极速入门教程 xff0c 今天将教
  • RPLIDAR的坐标系问题

    本教程由 臭皮匠机器人 原创 转载请注明出处 RPLIDAR自身的坐标系 RPLIDAR给出来的数据是角度和距离 xff0c 也就是极坐标系 转换成直角坐标系的话应该照转换公式计算 xff0c 假设r是距离 xff0c theta是角度 x
  • Makefile模板(取自vscode)

    文章目录 Makefile模板vscode插件 xff1a 单一目标编译多个目标 Makefile模板 vscode插件 xff1a 单一目标 最近在学习Makefile写法 xff0c 但是总觉得自己写的太烂了 xff0c 找到了vsco