Makefile编写

原创:http://blog.sina.com.cn/u/2312748742
一、静态规则:
  在目标或者依赖模式里的 % ,如 
  objects = foo.o bar.o 
  all: $(objects)
  $(objects): %.o :%.c
$(CC) -c $(CFLAGS) $< -o $@ 
上面的 $(objects),是个变量。相当于 foo.o bar.o ; %.o表示所有的.o文件。即 foo.o bar.o。%.c即是取%.o中的%.即 foo 和bar .因此 %.c 即是 foo.c bar.c。后面的 $< 自动变量,表示依赖文件集合,即是foo.c和bar.c。而$@同理为 foo.o和bar.o 
因此 等价于:
  all: foo.o bar.o
  foo.o:foo.c
$(CC) -c $(CFLAGS) foo.c -o foo.o
  bar.o:bar.c
$(CC) -c $(CFLAGS) bar.c -o bar.o

二、使用变量
  =   左侧是变量,右侧是变量的值,右侧的值可以定义在任何一处,可以在后面定义
  := 同理,但不同的是右侧变量的值需要在定义之前,防止嵌套定义
  ?= 例如 foo ?=bar 如果foo没有被定义过。则foo为bar ,如果之前被定义过,这条语句将什么都不做。
  += 在追加。
三、判断:
  例如:
  bar=
  foo=$(bar)
  ifdef foo
  frobozz=yes
  else 
  frobozz=no
  endif
  此时$(frobozz) 为 yes
  foo=  
  ifdef foo
  frobozz=yes
  else 
  frobozz=no
  endif
  此时$(frobozz) 为 no

 
四、加入头文件路径:
在刚开始时加入:
CROSS_COMPILE=arm-none-linux-gnueabi-
CC = $(CROSS_COMPILE)gcc
====》》INCLUDE := -I/workspace/gitspaces/dvsdk/linux-devkit/arm-none-linux-gnueabi/usr/include/
在all:hwtest 下加入:
.c.o:
  $(CC) -O1 -Wall -c $< -o $@ $(INCLUDE)
 
hwtest: $(OBJS) $(TFTP_OBJS)
  $(CC) -o hwtest $(OBJS) $(TFTP_OBJS) $(CFLAGS) $(INCLUDE)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值