系统变量
$*
不包括扩展名的目标文件名称 $+
所以的依赖文件,以空格分隔$<
表示规则中的第一个条件$?
所有时间戳比目标文件晚的依赖文件,以空格分隔$@
目标文件的完整名称
$^
所有不重复的依赖文件,以空格分隔
$%
如果目标是归档成员,则该变量表示目标的归档成员名称
系统常量(可理解为宏或别名)(可用make -p查看)
AS
汇编程序的名称,默认为asCC
C编译器名称,默认为ccCPP
C预编译器名称, 默认cc -ECXX
C++编译器名称,默认g++RM
文件删除程序别名, 默认rm -rf
自定义变量
- 定义: 变量名=变量值
- 使用:
(
变量名
)
/
(变量名)/
(变量名)/{变量名}
OBJ = add.exe
TARGET = calc
$(TARGET):$(OBJ)
gcc add.exe main.c -o main
add.exe:add.c
gcc add.c -nostartfiles -o add.exe
clean:
del *.exe
OBJ = add.exe
TARGET = calc
$(TARGET):$(OBJ)
gcc add.exe main.c -o main
add.exe:add.c
gcc $^ -nostartfiles -o $@
clean:
del *.exe
show:
@echo $(AS)
@echo $(CC)
@echo $(CPP)
@echo $(CXX)
@echo $(RM)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
OBJ1 = add.o
calc:$(OBJ1)
g$(CC) $^ main.c -o $@
add.o:add.c
g$(CC) -c $^ -nostartfiles -o $@
main.o:main.c
g$(CC) 0c $^ -o $@
clean:
@$(RM) *.out *.o
show:
@echo $(AS)
@echo $(CC)
@echo $(CPP)
@echo $(CXX)
@echo $(RM)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19