一.变量和不同的赋值方法
->makefile中支持程序设计语言中变量的概念
->makefile中的变量只代表文本数据(字符串)
->makefile中的变量名规则
- 变量名可以包含字符,数字,下划线。
- 不能包含 ":" "#" "=" " "
- 变量名大小写敏感
CC := g++
TARGET := hello-world.out
$(TARGET) : func.o main.o
$(CC) -o $(TARGET) func.o main.o
func.o : func.c
$(CC) -o func.o -c func.c
main.o : main.c
$(CC) -o main.o -c main.c
.PHONY : rebuild clean all
rebuild : clean all
all : $(TARGET)
clean :
rm *.o $(TARGET)
二.变量不同的赋值方式
->简单赋值(:=)
->递归赋值(=)
->条件赋值(?=)
->追加赋值(+=)
三.预定义变量的使用
$@: 当前规则中触发命令被执行的目标。
$^: 当前规则中的所有依赖。
$<: 当前规则中的第一个依赖。
例子1:
.PHONY : all first second third
all : first second third
@echo "\$$@ => $@"
@echo "$$^ => $^"
@echo "$$< => $<"
firtst:
second:
third:
输出:
$@ => all
$^ => first second third
$< => first
例子2:文章来源:https://www.toymoban.com/news/detail-790815.html
CC := g++
TARGET := hello-world.out
$(TARGET) : func.o main.o
$(CC) -o $(TARGET) func.o main.o
func.o : func.c
$(CC) -o func.o -c func.c
main.o : main.c
$(CC) -o main.o -c main.c
.PHONY : rebuild clean all
rebuild : clean all
all : $(TARGET)
clean :
rm *.o $(TARGET)
使用预定义变量修改后:文章来源地址https://www.toymoban.com/news/detail-790815.html
CC := g++
TARGET := hello-world.out
$(TARGET) : func.o main.o
$(CC) -o $@ $^
func.o : func.c
$(CC) -o $@ -c $^
main.o : main.c
$(CC) -o $@ -c $^
.PHONY : rebuild clean all
rebuild : clean all
all : $(TARGET)
clean :
$(RM) *.o $(TARGET)
到了这里,关于Makefile编译原理 变量的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!