Makefile编写

发布时间:2016-12-11 14:13:02 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Makefile编写",主要涉及到Makefile编写方面的内容,对于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。后面的 $< 自动变量,表示依赖文件集合,[email protected] 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)  

上一篇:git命令
下一篇:MyEclipse下的Debug调试

相关文章

关键词: Makefile编写

相关评论