makefile书写规则

一、make工程管理器

适当分割程序文件有利于大型程序开发与提高编写程序的效率。但文件分割越多就越难编译维护。

make工程管理器是一个自动编译管理器,这里的自动是指它能根据文件的时间戳自动发现更新过的文件而减少编译的工作量。

同时,它根据读入的makefile文件的内容进行大量的编译工作。


二、编写makefile文件

在一个makefile文件中通常包含如下内容:

1)需要由make工具创建的目标体,通常是目标文件或可执行文件。

2)要创建的目标所依赖的文件。

3)创建每个目标体时需要运行的命令。


三、案例

书写规则:

目标文件:依赖文件

(tab)产生目标文件的命令


例如:

CC=gcc
objects=hello.o

newtest: $(objects) helloworld.o
	$(CC) $(objects) helloworld.o -o newtest
$(objects): hello.c helloworld.h
	$(CC) hello.c -c
helloworld.o: helloworld.c
	$(CC) helloworld.c -c

clean :
	rm -f hello.o helloworld.o
注意:gcc前面的前面必须是一个tab

1.CC=gcc,objects=hello.o相当于设置变量。

之后调用变量的方式为$(变量名)

2.最后两行

clean:

(tab) rm -f hello hellworld.o

定义clean指令时执行的操作。调用方式:make clean


附:makefile中预定义变量表

$*              不包含扩展名的目标文件名称。
$+              所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<              第一个依赖文件的名称。
$?              所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@              目标的完整名称。
$^              所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%              如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
                为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR              归档维护程序的名称,默认值为 ar。
ARFLAGS         归档维护程序的选项。
AS              汇编程序的名称,默认值为 as。
ASFLAGS         汇编程序的选项。
CC              C 编译器的名称,默认值为 cc。
CCFLAGS         C 编译器的选项。
CPP             C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS        C 预编译的选项。
CXX             C++ 编译器的名称,默认值为 g++。
CXXFLAGS        C++ 编译器的选项。
FC              FORTRAN 编译器的名称,默认值为 f77。
FFLAGS          FORTRAN 编译器的选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值