Makefile 的知识
1. Makefile 语法 ? ? ? ? ? ? ? ? ? ? ? ? ? ?生成的文件(targets):依赖的文件(prerequisites?) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件如何生成 (recipe) test.o : a.o,b.o,c.o gcc -o a.o b.o c.o a.o: a.c gcc -c a.o a.c b.o: b.c gcc -c b.o b.c c.o: c.c gcc -c c.o c.c 其中代码前面的空当不是空格而是Tab ? 2.可是这个样子太麻烦了如果有很多的文件会写的很长 所以此时我们需要一些通用服去代表所有的文件 test:a.o b.o gcc -o test a.o b.o %.o: %.c gcc -c -o [email?protected] $< 其中 [email?protected] 表示的是目标文件(,o文件) $<表示的是第一个依赖文件(第一个.c文件) 如果使用$^ 表示所有的依赖文件 test:$^ gcc -o test a.o b.o %.o: %.c gcc -c -o [email?protected] $< .PHONY 这个是为了当有其他文件被叫做clean的时候执行不了文件 所以需要加上它 ? 3. 立即变量: ? ? ? ? ? ? ? ? ?A? := abc? 4.? 延迟变量: 只是在使用的时候才赋值 只是会得到最后得值 ? ? A = $(C) ? ?C= 124 ? C= 123 ? ?此时A为123 5. append Plus += 不会覆盖原来的值会在后面增加新的值 ? ? 6. 函数的运用: ? ? ?A = a b c ? ? ?B = $(foreach f,$(A), $(f).o) all: ? ? ? ?@echo B = $(B) 把叫A变量里面每个名字叫a b c de文件变成.o的形式 ? ?? $(filter patent,text) 在字符串中选择符合patent格式的值 ? ? $(filter-out patent,text) 在字符串中选择不符合patent格式的值 ?注意patent 要加% ? $(wildcard patent) 是否真实存在像patent格式那样的文件 ? $(patsubst patent replacement text) 把text中的patent替换成replacement。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |