makefile变量定义和使用释义和示例:
1. makefile 文件
TARGET = main
objects = main.o std.o
#objects := $(wildcard *.o)
#objects := [*.o]
#隐藏编译规则
HIDE := @
####
# 变量的定义和使用:
# 1. :=
# 直接赋值,定义的变量立即生效;
# 2. =
# 递归赋值,定义的变量延迟生效
# 3. ?=
# 条件赋值,如果变量已经定义过,则变量值不会改变
# 4. +=
# 追加赋值,类似于字符串拼接
#
####
V1 := 5
VAR1 := $(V1) # VAR1 = 5
V1 := 6
V2 = 5
VAR2 = $(V2) # VAR2 = 6
V2 = 6
VAR3 = 10
VAR3 ?= 11 # VAR3 = 10
VAR4 = a.o b.o c.o # VAR4 = a.o b.o c.o D.o
VAR4 += D.O
$(TARGET) : $(objects)
$(HIDE)gcc -o $@ $^
$(HIDE)echo "VAR1 = $(VAR1)"
$(HIDE)echo "VAR2 = $(VAR2)"
$(HIDE)echo "VAR3 = $(VAR3)"
$(HIDE)echo "VAR4 = $(VAR4)"
#函数调用
$(test)
%.o:%.c
$(HIDE)gcc -c -o $@ $^
#伪目标定义
.PHONY : clean
clean:
$(HIDE)rm -rf $(TARGET) *.o
# function define
define test
$(HIDE)echo "<func test> test for makefile's function"
endef
2. 待编译文件:
main.c :
#include <stdio.h>
int main(int argc, int *argv[])
{
return 0;
}
std.c :
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}