Makefile教程(掌握这里足够)

article/2025/9/12 16:59:31

众所周知,在Linux环境下进行项目开发那就少了使用make来构建和管理自己的工程。如果想要更加深入的学习,我在这里推荐一本书
https://www.jianguoyun.com/p/DZWKrLIQjKL5Bxi0z5UD 访问密码:KvhT2v

1. makefile的命名

默认的情况下,make 会在工作目录(执行 make 的目录)下按照文件名顺序寻找makefile 文件读取并执行,查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”。

2. makefile的规则:

规则中的三要素: 目标, 依赖, 命令
在这里插入图片描述

3. makefile的两个函数

3.1 获取匹配模式文件名函数—wildcard

$(wildcard *.c)
函数功能:列出目录下所有符合文件格式的文件

src=$(wildcard ./*.c)  #返回值为当前目录下所有.c 源文件列表。

3.2 模式替换函数—patsubst

$(patsubst PATTERN,REPLACEMENT,TEXT)
函数功能:列出目录下所有符合文件格式的文件

obj=$(patsubst ./%.c, ./%.o, $(src)) #返回值将当前目录下的.c源文件替换为.o文件

3.3 查找字符串函数—findstring

$(findstring FIND,IN)
函数功能:搜索字串“IN”,查找“FIND”字串。

示例:
$(findstring a,a b c)
$(findstring a,b c)
第一个函数结果是字“a”;第二个值为空字符。

4. makefile的三个自动变量

$<:规则中的第一个依赖
$@:规则中的目标
$^:规则中的所以依赖

5.makefile模版

5.1初步版Makefile

src=$(wildcard ./*.c)
obj=$(patsubst ./%.c, ./%.o, $(src))
target=app
cc = gcc
CPPFLAGS = -I$(target):$(obj)$(cc) $(obj) -o $(target)%.o:%.c$(cc) -c $< -o $@.PHONY:clean 
clean:rm $(obj) $(target) -fhello:echo "Hello,makefile"

5.2进阶版Makefile

.PHONLY :all cl cla
src = $(wildcard ./*.c)
targetc = $(patsubst %.c, % ,$(src))
objc = $(patsubst %.c, %.o, $(src))#srcpp = $(wildcard ./*.cpp)
#targetcpp = $(patsubst %.cpp, %, $(srcpp))
#objcpp = $(patsubst %.o, %.cpp, $(srcpp))CC = gcc
#PP = g++CFLAGS = -g -Wall 
CPPFLAGS = -I ./ifeq ($(findstring .c, $(src)), .c)
all:$(targetc)
$(targetc):%:%.o$(CC) $< -o $@
$(objc):%.o:%.c$(CC) -c $< 
endifcl:rm -rf $(objc)
cla:rm -rf $(objc)rm -rf $(targetc)rm -rf a.out

http://chatgpt.dhexx.cn/article/XYqpm4GT.shtml

相关文章

Makefile 编写教程(由简至难)

目录 一、测试代码二、.c 文件与Makefile同级三、.c文件与Makefile不同级四、链接静态库 一、测试代码 本文以将main.c add.c common.h三个文件编译成一个可执行文件为例&#xff0c;来讲解Makefile的编写。以下是每个文件的代码&#xff08;很简单&#xff0c;测试用&#xf…

好看的vscode字体

vscode下载上面出现的字体(自行百度搜索) (Cascadia Code, 等线)(等线是中文, Cascadia Code是英文, 自认为比较cool的搭配, 也可以自行选择)然后放到C:\Windows\Fonts 会自动安装就完事了~ 欢迎大家关注我的公众号:<前端成长指南> 我会把我的原创作品陆续放在上面

Unity3D中字体样式

字体样式分为三种 系统默认字体 自定义字体&#xff08;包括全部字体&#xff09; 自定义字体&#xff08;不包括全部字体&#xff09;系统默认字体描述优点内存占用小缺点没有艺术效果&#xff0c;没有灵魂 自定义字体&#xff08;包括全部字体&#xff09;描述优点具有一定…

前端HTML字体和文本样式

前端HTML字体和文本样式 文章目录 前端HTML字体和文本样式1.字体样式1.1字体大小1.2 字体粗细1.3 字体样式&#xff08;是否倾斜&#xff09;1.4字体类型1.5 样式层叠问题1.6 字体复合属性 2.文本样式2.1 文本缩进2.2 文本水平对齐方式2.3文本修饰 3.行高 属性表示注意点font-s…

layui表头样式_Layui表格好看样式

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Layui表格好看样式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a;web 作者&#xff1a;xq 撰写时间&#xff1a;2019.7.27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

android+字体样式包,android 改变全局字体样式(第三方字体包)

android 改变全局字体样式 参考&#xff1a;http://stackoverflow.com/questions/2711858/is-it-possible-to-set-font-for-entire-application/16883281#16883281 1.将要替换的字体包放到assets下 2.具体代码&#xff1a; //设置新的字体样式 public static void setDefaultFo…

IDEA 修改字体样式

每次发现别人的IDEA字体都是这么好看&#xff0c; 今天这里推荐一款设置方法美化我们IDEA的代码&#xff0c; 代码变漂亮了&#xff0c;写代码也更带劲&#xff01;注意哦这针对的都是windows系统哦&#xff0c;mac系统就不用了&#xff0c;已经很完美了 第一步&#xff1a;下载…

7.20 Web前端-字体样式

今天为大家介绍一下关于字体的相关知识&#xff0c;这里的知识比较简单&#xff0c;因为之前的教学中我们已经接触到了一部分关于字体的知识&#xff0c;在这里我来汇总说一下。 1.长度单位&#xff1a; 长度单位就是你的字体在网页中占用的长度是多少&#xff0c;在web中不是…

9款漂亮的纯css字体样式

样式&#xff1a; 代码&#xff1a; <html> <head> </head> <style>body{text-align: center;}.hcqFont{position:relative;letter-spacing:.07em;font-size:3em;font-weight:normal;margin:0 auto}.hcqFont:before,.hcqFont:after{position:absolut…

7款漂亮的纯css字体样式

简单粗暴&#xff0c;直接上马&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><h1 class"vintage1">美丽的中国语</h1><h1 class"vi…

纯Css比较好看的中英文字体样式(持续整理版)

刚好公司要用到&#xff0c;需要纯css的&#xff0c;不用任何插件就可以显示很不错的字体 样式一&#xff1a; <style type"text/css"> .tb-js-yf-style{font-family: "Arial","Microsoft YaHei","黑体","宋体",san…

Windows 安装 HDF5 C++库

1. 简介 HDF5可以自己从源码编译&#xff0c;也可以通过下载已经编译好的版本的安装包安装。下面介绍的是安装包安装的方式。 2. HDF5安装包下载 地址1&#xff1a; https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.18/bin/windows/ 地址2&#xff1a; h…

HDF5 使用介绍

1、HDF5介绍 HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心&#xff08;NCSA&#xff09;创建的&#xff0c;以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计…

hdf5 文件生成 C++

使用 hdf5 配置 1. 包含目录 E:\WorkSpace\SoftWare\hdf5\include 2.库目录 E:\WorkSpace\SoftWare\hdf5\lib\ 3.链接器 -输入 hdf5.lib hdf5_cpp.lib 4. C/C -预处理器定义 H5_BUILT_AS_DYNAMIC_LIB; 注意 使用 hdf5 用于 训练 过程 void dataToMat(vector<Lan…

HDF5 学习总结1

目录 一 HDF5简介 1.1 HDF5背景 1.2 抽象数据模型 1.2.1 File 1.2.2 Group 1.2.3 Dataset 1.2.4. Dataspace 1.2.5. Datatype 1.2.6. Attribute 1.2.7. Property List 1.2.8. Link 一 HDF5简介 1.1 HDF5背景 HDF5:(Hierarchical Data Format)是由美国伊利诺伊大…

HDF5 windows编译 release版本、Debug版本

由于最近急需的一个项目&#xff0c;需要hdf5库&#xff0c;误打误撞&#xff0c;编译成功。特此记录 1、下载源代码 官网下载地址&#xff1a;https://portal.hdfgroup.org/display/support/HDF51.12.2#files 找到如下地址&#xff0c;本人电脑有cmake软件&#xff0c;我下…

[HDF5]如何使用CMake一起编译自己的代码和HDF5库

以一个实际项目来举例 目录 一.目录结构 二.CMakeLists.txt内容 三.执行CMakeLists命令 一.目录结构 1.build放CMake执行后生成的所有的内容&#xff0c;包括最后的工程或可执行文件等; 2.include放工程的头文件&#xff0c;以及HDF5的头文件&#xff0c;可以直接把HDF5中…

HDF5简介

1、介绍 HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心&#xff08;NCSA&#xff09;创建的&#xff0c;以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计为&…

HDF5数据的打包与使用(以图像数据为例)

文章目录 1 什么是HDF5数据2 HDF5数据格式的生成3 HDF5数据的查看 注&#xff1a;此篇内容主要作为使用PyTorch构建GAN生成对抗网络博客中&#xff0c;HDF5数据类型的补充介绍。 1 什么是HDF5数据 HDF5 数据是存储在一种名为 Hierarchical Data Format version 5 (HDF5) 的二进…

HDF5-简介

HDF&#xff08;Hierarchical Data Format&#xff09;是一种设计用于存储和组织大量数据的文件格式&#xff0c;最开始由美国国家超算中心研发&#xff0c;后来由一个非盈利组织HDF Group支持.HDF支持多种商业及非商业的软件平台&#xff0c;包括MATLAB、Java、Python、R和Jul…