我自己写Makefile, 里面注释了一些写法, 希望能帮到别人

 我自己写Makefile, 里面注释了一些写法, 希望能帮到别人

最好的参考博客:

跟我一起写 Makefile(完整版)_跟我一起写makefile_赏善罚饿的博客-CSDN博客

第1种:

# 设置编译器
cc := gcc
cflags := -O0 -Wall -g


# 设置中间目标文件
objects := ert_main.o \
	ert_top_model_2017a.o \
	ert_ref_model_1_2017a.o \
	ert_ref_model_2_2017a.o


# 编译最终目标文件
ert_main : $(objects)
	$(cc) $(cflags) -o ert_main $(objects)


# 编译中间目标文件
ert_main.o : ert_main.c ert_top_model_2017a.h rtwtypes.h
	$(cc) $(cflags) -c ert_main.c

ert_top_model_2017a.o : ert_top_model_2017a.c ert_top_model_2017a.h ert_top_model_2017a_private.h
	$(cc) $(cflags) -c ert_top_model_2017a.c

ert_ref_model_1_2017a.o : ert_ref_model_1_2017a.c ert_ref_model_1_2017a.h ert_ref_model_1_2017a_private.h
	$(cc) $(cflags) -c ert_ref_model_1_2017a.c

ert_ref_model_2_2017a.o : ert_ref_model_2_2017a.c ert_ref_model_2_2017a.h ert_ref_model_2_2017a_private.h
	$(cc) $(cflags) -c ert_ref_model_2_2017a.c


# 设置伪目标文件
.PHONY : clean

clean :
	rm ert_main $(objects)

第2种:

# make一些规则
############################################################################
# $@ : 表示目标
# $^ : 表示所有的依赖
# $< : 表示第一个依赖
#
# =  : 使用=进行赋值, 变量的值是整个Makefile中最后被指定的值
# := : 使用:=进行赋值, 表示直接赋值
# ?= : 使用?=进行赋值, 表示如果该变量没有被赋值, 则赋予等号后的值
# += : 使用+=进行赋值, 和平时写代码的理解一样, 表示将等号后面的值添加到前面的变量
#
############################################################################ 



############################ 定义一些变量: 开始 ############################
cc := gcc
cflags := -O0 -Wall -g
objs := main_run.o\
	   general_header.o\
	   ode_forward_euler.o\
	   ode_backward_euler.o\
	   ode_trapezoid.o

# 定义变量dep_files: 保存所有的依赖(包括根据.h依赖所生成的依赖表.d文件)
dep_files := $(patsubst %, %.d, $(objs))

# 判断变量dep_files: 判断该变量中的文件是否存在, 得到真实存在的文件
dep_files := $(wildcard $(dep_files))
############################ 定义一些变量: 结束 ############################



############################ 编译目标文件: 开始 ############################
main_run: $(objs)
	$(cc) $(cflags) $^ -lm -o $@

# 判断变量dep_files是否为空, 如果不是空, 把变量dep_files中的依赖引入到Makefile中
ifneq ($(dep_files),)
include $(dep_files)
endif

# -MD -MF: 在编译源文件时, 生成依赖规则.d文件(包括.h)
$(objs): %.o: %.c
	$(cc) $(cflags) -c $< -MD -MF $@.d -o $@
############################ 编译目标文件: 结束 ############################



# .PHONY: xxx : 明确说明, xxx命令与当前编译的目录中的同名文件无关
.PHONY: clean

# 设置该标签用于清除*.o, *.o.d和目标运行文件
clean:
	rm $(objs) $(dep_files) main_run



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空-自然-7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值