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强制变成可执行文件。
原文地址:https://www.cnblogs.com/davidzhou11225/p/2458953.html