下面这个makefile非常简单,能满足基本的项目需要,首先是一个总的target:142Please respect copyright.PENANAzM5nAFhsgd
all: $(TARGET)
这个总的target由多个.o文件link而成:142Please respect copyright.PENANAl13nNavarm
$(TARGET) : $(OBJECTS)142Please respect copyright.PENANAnrPijVvbUM
$(CC) -o $(TARGET) $(addprefix $(OBJ_DIR)/, $(OBJECTS)) $(CFLAGS)142Please respect copyright.PENANAtjr671MG6c
echo "make succeed"
每个.o文件对应一个同名的.cpp文件,加上全局的头文件,这里有3个全局的头文件,如果不加头文件,那么当头文件被修改时,.cpp不会被重新编译成.o,因此一定要加:142Please respect copyright.PENANAGCdJTWTps8
%.o : %.cpp $(H_DIR)/01.system.h $(H_DIR)/02.01.macros.h $(H_DIR)/02.types.h142Please respect copyright.PENANA4uvrvb9OqL
$(CC) -c -g $< -o $(OBJ_DIR)/$@
这样makefile就做好了,完整的内容如下:
----------makefile------------------
CC = gcc142Please respect copyright.PENANAOXgXmVXOdv
CFLAGS = -lpthread -lm -lssl -lcrypto -lzip -g142Please respect copyright.PENANAzcIRxU1LZx
142Please respect copyright.PENANAGGE9BKImXs
TARGET = buda142Please respect copyright.PENANABcII0kA5vk
OBJ_DIR = ./debug/obj142Please respect copyright.PENANAzXGHRpOFby
SRC_DIR = ./src142Please respect copyright.PENANAh8nRg57dct
H_DIR = ./includes142Please respect copyright.PENANAuptD9NXOnB
142Please respect copyright.PENANADL4wUrwiOO
SRC = $(wildcard $(SRC_DIR)/*.cpp)142Please respect copyright.PENANAgwkkvp08QZ
OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, %.o, $(SRC))142Please respect copyright.PENANAbk27QPtVyP
142Please respect copyright.PENANAyepBhgdQN6
VPATH = $(SRC_DIR)142Please respect copyright.PENANAuTfOr9K6KV
vpath %.o $(OBJ_DIR)142Please respect copyright.PENANAbEV78W1Olz
142Please respect copyright.PENANAGfaw7wJ1dH
all: $(TARGET)142Please respect copyright.PENANAHUp4XZsb6Q
142Please respect copyright.PENANA5JLCZelTxK
$(TARGET) : $(OBJECTS)142Please respect copyright.PENANARZhOkurDel
$(CC) -o $(TARGET) $(addprefix $(OBJ_DIR)/, $(OBJECTS)) $(CFLAGS)142Please respect copyright.PENANACmNNcKcWAv
echo "make succeed"142Please respect copyright.PENANA6dYWCQHDiN
142Please respect copyright.PENANAjxddSX7FxS
%.o : %.cpp $(H_DIR)/01.system.h $(H_DIR)/02.01.macros.h $(H_DIR)/02.types.h142Please respect copyright.PENANAp0YkAmrYrg
$(CC) -c -g $< -o $(OBJ_DIR)/$@
.PHONY : clean
clean:142Please respect copyright.PENANA2EH3PjqPzW
rm -rf ./debug/$(TARGET) $(TARGET) $(OBJ_DIR)/*.o ./*.o
rebuild:142Please respect copyright.PENANAIKmQ68FldA
make clean142Please respect copyright.PENANA14WntoRVTz
make142Please respect copyright.PENANAlR7YBgPHct
142Please respect copyright.PENANAZjcnQuHcOO
142Please respect copyright.PENANAlV7J5vyPZC
------------------------------------
Section X. Thanks
https://blog.csdn.net/qq_38113006/article/details/112055076142Please respect copyright.PENANApNcnN26twQ
https://blog.csdn.net/momodosky/article/details/119857980142Please respect copyright.PENANAQOCjcSIeXB
https://makefiletutorial.com/142Please respect copyright.PENANAyxJPFpslEI
https://makefiletutorial.com/#makefile-cookbook
Section Y. Contacts Me
If you found any errors or have any suggestions for this article, please let me know, my wechat: si_jinmin, my email: [email protected]142Please respect copyright.PENANApZCwrZgJWr
如果您发现本文有任何错误,或者对本文有好的建议,欢迎与我联系探讨,我的微信: si_jinmin, 我的email: [email protected]
如果您對C/C++ Programming, Linux, HTTP Protocol, Website Development, Vue, Git, VsCode感興趣,邀請您加入「Linux/C/C++ Website Development」微信群,請加我的微信(si_jinmin)以便拉您进群。142Please respect copyright.PENANACuG8mzwRfu
142Please respect copyright.PENANA4giIUp0z2b