(资料图)

make学习,参考「Makefile 20分钟入门,简简单单,展示如何使用Makefile管理和编译C++代码」

程序见:https://github.com/ShiqiYu/CPP/tree/main/week03/examples/lab

文件结构

make语法

#「只编译不链接」编译.cpp文件,得到.o文件g++ -c *.cpp  #链接,将.o文件链接到一起,得到可执行文件 g++ *.o file  # 显示编译时的warningg++ -c -Wall *.cpp

版本1

## VERSION 1hello: main.cpp printhello.cpp  factorial.cppg++ -o hello main.cpp printhello.cpp  factorial.cpp

版本2

## VERSION 2# 变量定义CXX = g++TARGET = helloOBJ = main.o printhello.o factorial.o# 「链接」.o文件$(TARGET): $(OBJ)$(CXX) -o $(TARGET) $(OBJ)# 「编译」生成.omain.o: main.cpp$(CXX) -c main.cppprinthello.o: printhello.cpp$(CXX) -c printhello.cppfactorial.o: factorial.cpp$(CXX) -c factorial.cpp

版本3

## VERSION 3# 变量定义CXX = g++TARGET = helloOBJ = main.o printhello.o factorial.o# 编译时显示warningCXXFLAGS = -c -Wall$(TARGET): $(OBJ)$(CXX) -o $@ $^%.o: %.cpp$(CXX) $(CXXFLAGS) $< -o $@.PHONY: cleanclean:rm -f *.o $(TARGET)

版本4

## VERSION 4CXX = g++TARGET = helloSRC = $(wildcard *.cpp)OBJ = $(patsubst %.cpp, %.o, $(SRC))CXXFLAGS = -c -Wall$(TARGET): $(OBJ)$(CXX) -o $@ $^%.o: %.cpp$(CXX) $(CXXFLAGS) $< -o $@.PHONY: cleanclean:rm -f *.o $(TARGET)

参考

1、http://www.freecplus.net/b7a1c199959f4349b2a98874864a2000.html

推荐内容