Makefile用法

make命令概述

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

使用make可以提升编译效率(一方面是简化了重复的命令,另一方面是只编译修改的文件)

变量的赋值

符号作用
   =是最基本的赋值方式,与在文中位置无关,系统自动推导将最终的赋值作为该变量的值。
  ?=  作用是当某变量前面已经定义赋值过,则不执行本次定义赋值,否则执行本次赋值
  :=是覆盖式赋值,假如某变量在前面已经定义赋值过,则将本次赋值作为最新的变量值
  +=  追加赋值,旧值保持不变,将新值黏贴到旧值后面

自动变量

符号作用
   $*  不包含扩展名的目标文件名称
   $+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
  $<第一个依赖文件的名称
  $?所有时间戳比目标文件晚的的依赖文件,并以空格分开
  $@目标文件的完整名称
  $^所有不重复的目标依赖文件,以空格分开
  $% 如果目标是归档成员,则该变量表示目标的归档成员名称

隐含变量

变量名说明
AR库文件维护程序的名称,默认值为ar。
AS汇编程序的名称,默认值为as。
CCC编译器的名称,默认值为cc。
CPPC预编译器的名称,默认值为$(CC)  –E。
CXXC++ 编译器的名称,默认值为g++。
FCFORTRAN编译器的名称,默认值为f77
RM文件删除程序的名称,默认值为rm -f
ARFLAGS 库文件维护程序的选项,无默认值。
ASFLAGS 汇编程序的选项,无默认值。
CFLAGS C编译器的选项,无默认值。
LDFLAGS链接器的选项,无默认值。
CPPFLAGSC预编译的选项,无默认值。
CXXFLAGSC++编译器的选项,无默认值。
FFLAGSFORTRAN编译器的选项,无默认值。

练习题

有fun1.c、fun2.c、hand.h和main.c文件,编写一个makefile文件

SRC = $(wildcard *.c) #获取目录下所有后缀名为.c的文件名称
OBJ = $(patsubst %.c, %.o, ${SRC}) #把SRC字符串里面所有的.c文件名称替换成.o

FWK = X86

#条件编译
ifeq (${FWK}, X86)
CC = gcc
endif

CFLAGS = -c -g -Wall

test:${OBJ}
	${CC} $^ -o $@

%.o:%.c
	${CC} $(CFLAGS) $^ -o $@

#伪目标
.PHONY:clean
clean:
	${RM} *.o
	#rm -f *.o

编译结果

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值