伪目标 .PHONY:clean
声明目标为伪目标之后,makefile将不会判断目标是否存在或该目标是否需要更新,
简单来说就是不会受到一些同名的文件的影响,也会进来makefile中执行对应的指令。。
模式匹配
简略很多,%.o:%.cpp,.o依赖于对应的 .cpp
.PHONY:clean show
OBJ=add.o sub.o multi.o calc.o
TARGET=calc
$(TARGET):$(OBJ)
$(CXX) $(OBJ) -o $(TARGET)
%.o:%.cpp
$(CXX) -c $^ -o $@
clean:
$(RM) *.o $(TARGET)
show:
echo $(AS)
echo $(CC)
echo $(CPP)
echo $(CXX)
echo $(RM)
执行编译一下看看,也是可以成功的
wildcard $(wildcard ./*.cpp)获取当前目录下所有的.cpp 文件
patsubst $(patsubst %.cpp,%.o,./*.cpp)将对应的 cpp 文件名替换成 .o 文件名
也是可以正常执行
[外链图片转存中…(img-Pn4flbDv-1705770521207)]
也是可以正常执行