码迷,mamicode.com
首页 > 系统相关 > 详细

Linux Makefile学习

时间:2017-06-18 21:46:42      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:linu   语句   car   依赖性   技巧   clean   http   .net   过程   

编译环境GNU Make 4.1

# 变量声明方式,会在需要展开时进行展开
# 貌似变量前面后面加空格是没关系的
OBJECTS=   main.o test1.o test3.o   
# 无论执行make或是make clean,打印出的TESTVAL值都是2
# 所以变量重新赋值会可能产生一些意想不到的问题
TESTVAL=1

.PHONY:out
# 第一个目标名为默认最终目标名
#out:main.o test1.o test3.o
# 等价语句
out1:$(OBJECTS)
	#gcc -o out main.o test1.o test3.o
	# 等价语句
	#gcc -o out $(OBJECTS)
	# 等价语句
	# $@代表所有输出
	gcc -o $@ $(OBJECTS)
	# 等价语句
	# $^代表所有输入
	#gcc -o $@ $^
	@# 在执行过程中会显示每一句话,如果不想显示则加@
	@echo $(TESTVAL)

main.o:main.c test1.h test3.h 
	gcc -c main.c

test1.o:test1.c test1.h test2.h
	gcc -c test1.c
	# 如果test1.c编译错误,即便有touch,test1.o和test3.o都不会出现,在gcc -c test1.c前面加“-”号才可以实现继续make
	#touch test1.o 

test3.o:test3.c test3.h test4.h
	gcc -c test3.c

# %.o代表所有在匹配的.o输出文件
# %.c代表.o相应名称的.c
# 如果除了main.o、test1.o、test2.o还有其他.o文件需要匹配,则使用此条规则
%.o:%.c
	gcc -c $^
	# 等价语句
	# $<代表第一个输入参数
	#gcc -c $<

# 无论执行make或是make clean,打印出的TESTVAL值都是2
# 所以变量重新赋值会可能产生一些意想不到的问题
TESTVAL=2

# wildcard代表通配符展开,如果“OBJS=*.o”就不对了
# 如果变量后面加注释如下,则变量后面多了一个空格,在某些场合会出错
# OBJS=$(wildcard *.o) #
# .PHONY:代表无视依赖性,每次都执行,用在clean上是为了防止有文件名称为clean
.PHONY:clean
clean:
	rm -f main.o test1.o test3.o out
	@echo $(TESTVAL)
	# 等价语句
	#rm -f $(OBJS) out
	# 等价语句
	# 此处要加“-”号,否则第一步没执行完第二步就不执行了
	#-rm -f main.o test1.o 
	#-rm -f test3.o out
	# 等价语句
	#rm -f *.o out

 

还有很多高级技巧,待续~

 

参考文献:跟我一起写Makefile 陈皓

http://blog.csdn.net/haoel/article/details/2886/

http://blog.csdn.net/haoel/article/details/2887/

http://blog.csdn.net/haoel/article/details/2888/

http://blog.csdn.net/haoel/article/details/2889/

http://blog.csdn.net/haoel/article/details/2890/

http://blog.csdn.net/haoel/article/details/2891/

http://blog.csdn.net/haoel/article/details/2892/

http://blog.csdn.net/haoel/article/details/2893/

http://blog.csdn.net/haoel/article/details/2894/

http://blog.csdn.net/haoel/article/details/2895/

http://blog.csdn.net/haoel/article/details/2896/

http://blog.csdn.net/haoel/article/details/2897/

http://blog.csdn.net/haoel/article/details/2898/

http://blog.csdn.net/haoel/article/details/2899/

Linux Makefile学习

标签:linu   语句   car   依赖性   技巧   clean   http   .net   过程   

原文地址:http://www.cnblogs.com/jhc888007/p/7045367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!