makefile里面的变量使用,系统变量

文章目录

  • makefile里面的变量使用

makefile里面的变量使用

calc:add.o sub.o multi.o
        gcc add.o sub.o multi.o calc.cpp -o calc

add.o:add.cpp
        gcc -c add.cpp -o add.o

sub.o:sub.cpp
        gcc -c sub.cpp -o sub.o

multi.o:multi.cpp
        gcc -c multi.cpp -o multi.o

clean:
        rm -rf *.o calc


执行,可以看到可以正常编译我们的源代码文件成为可执行文件

在这里插入图片描述

我们换一种写法

自定义变量

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        gcc $(OBJ) -o $(TARGET)

add.o:add.cpp
        gcc -c add.cpp -o add.o

sub.o:sub.cpp
        gcc -c sub.cpp -o sub.o

multi.o:multi.cpp
        gcc -c multi.cpp -o multi.o

calc.o:calc.cpp
        gcc -c calc.cpp -o calc.o

clean:
        rm -rf *.o calc

执行一下,也是可以的,这也是一种写法

在这里插入图片描述

系统变量

?

不包括扩展名的目标文件名称

*不包括扩展名的目标文件名称

?不包括扩展名的目标文件名称+ 所有的依赖文件,以空格分隔
$<表示规则中的第一个条件
$?所有时间戳比目标文件晚的依赖文件,以空格分隔
$@ 目标文件的完整名称

有不重复的依赖文件,以空格分隔

^所有不重复的依赖文件,以空格分隔

所有不重复的依赖文件,以空格分隔% 如果目标是归档成员,则该变量表示目标的归档成员名称

在这里插入图片描述

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        gcc $(OBJ) -o $(TARGET)

add.o:add.cpp
        gcc -c $^ -o $@

sub.o:sub.cpp
        gcc -c $^ -o $@

multi.o:multi.cpp
        gcc -c $^ -o $@

calc.o:calc.cpp
        gcc -c $^ -o $@

clean:
        rm -rf *.o $(TARGET)

执行一下

在这里插入图片描述

系统常量(可用 make -p 查看)

AS汇编程序的名称, 默认为 as

CC C编译器名称 默认 cc

CPP C预编译器名称 默认 cc -E

CXX C++ 编译器名称 默认 g++

RM文件删除程序别名 默认 rm -f

在这里插入图片描述

在这里插入图片描述

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        $(CXX) $(OBJ) -o $(TARGET)

add.o:add.cpp
        $(CXX) -c $^ -o $@

sub.o:sub.cpp
        $(CXX) -c $^ -o $@

multi.o:multi.cpp
        $(CXX) -c $^ -o $@

calc.o:calc.cpp
        $(CXX) -c $^ -o $@

clean:
        $(RM) *.o $(TARGET)

show:
        echo $(AS)
        echo $(CC)
        echo $(CPP)
        echo $(CXX)
        echo $(RM)

也是可以正常输出

M) *.o $(TARGET)

show:
echo $(AS)
echo $(CC)
echo $(CPP)
echo $(CXX)
echo $(RM)

也是可以正常输出