MakeFile简单示例

发布时间 2023-06-21 10:25:53作者: JianYuBlog

简单的Makefile编写学了会点,不学又忘了。这里参考了多位大佬的Makefile教程,自己给自己写的示例,如有错误请告知一下我。

#version 1//最简单,没难度
hello : main.cpp one.cpp two.cpp
    g++ -o hello main.cpp one.cpp two.cpp

#version 2//将编译和链接分开,简化编译
CXX=g++
TARGET=hello
OBJ=main.o one.o two.o

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

main.o:main.cpp
    $(CXX) -c main.cpp
one.o:one.cpp
    $(CXX) -c one.cpp
two.o:two.cpp
    $(CXX) -c two.cpp

#version 3 简化编译命令
CXX=g++
TARGET=hello
OBJ=main.o one.o two.o
CXXFLAGS=-c -Wall

$(TARGET):$(OBJ)
    $(CXX) -o $@ $^
%.o:%.cpp
    $(CXX) $(CXXFLAGS) $< -o $@ 
    #-o是制定名称的意思

.PHONY: clean
clean :
    rm -f *.o $(TARGET)

#version 4
CXX=g++
TARGET=hello
SRC=$(wildcard *.cpp)
#找到当前目录下所有的cpp
OBJ=$(patsubst %.cpp,%.o,$(SRC))
#将.cpp替换为.o
CXXFLAGS=-c -Wall

#^全部依赖;<第一个依赖
$(TARGET):$(OBJ)
    $(CXX) -o $@ $^
%.o:%.cpp
    $(CXX) $(CXXFLAGS) $< -o $@
.PHONY:clean 
clean:
    rm -f *.o $(TARGET)