Makefile编写基础知识总结
1.变量定义
变量名 = 赋值 CFLAGS = -Wall -O –g //这是配置编译器设置,并把它赋值给CFFLAGS变量。 -Wall: 输出所有的警告信息。 -O: 在编译时进行优化。 -g: 表示编译debug版本。
2.变量引用
$(变量名)
$(CFLAGS)
3.函数
函数1:wildcard
产生一个所有以 '.c'结尾的文件的列表。
SOURCES = $(wildcard *.c *.cpp) //表示产生一个所有以 .c,.cpp结尾的文件的列表,然后存入变量 SOURCES 里。
函数2:patsubst
匹配替换,有三个参数。第一个是一个需要匹配的式样,第二个表示用什么来替换它,第三个是一个需要被处理的由空格分隔的列表。
OBJS = $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCES))) //表示把文件列表中所有的.c,.cpp字符变成.o,形成一个新的文件列表,然后存入OBJS变量中。 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o:%.cpp $(XX) $(CFLAGS) -c $< -o $@
这几句命令表示把所有的.c,.cpp编译成.o文件。
这里有三个比较有用的内部变量:
$@ 扩展成当前规则的目的文件名, $< 扩展成依靠 列表中的第一个依靠文件, $^ 扩展成整个依靠的列表(除掉了里面所有重 复的文件名)。
chmod a+x $(TARGET)表示把helloworld强制变成可执行文件。