C/C++-Makefile unterstützt Batch-Vorlagen mit mehreren Verzeichnissen und mehreren Dateien

Aus beruflichen Gründen musste ich kürzlich versuchen, mit bloßen Händen ein Makefile zu erstellen. Diese Vorlage unterstützt die Stapelverarbeitung und legt keine Regeln für eine bestimmte C/CPP-Datei fest:

# Makefile for building: GuiDemo 
# by MT 2023-12-12 v1.0
# http://blog.csdn.net/wangningyu
CC            = gcc
CFLAGS        = -std=c11 -Wall
TARGET        = ./bin/GuiDemo

SRC_FLASH     = flash
SRC_GUI       = gui/Gui
SRC_MISC      = gui/Misc
SRC_USER      = gui/User
SRC_FONT      = gui/User/Fonts/

INC_ROOT      = .
INC_DIR       = gui/
INC_FLASH     = flash/
INC_GUI       = gui/Gui/
INC_MISC      = gui/Misc/
INC_USER      = gui/User/
INC_FONT      = gui/User/Fonts/
INC_SDL2      = SDL2/32/include/SDL2/
INCLUDE_DIR   = -I$(INC_ROOT) -I$(INC_DIR) -I$(INC_FLASH) -I$(INC_GUI) -I$(INC_MISC) -I$(INC_USER) -I$(INC_FONT) -I$(INC_SDL2)

LIB_DIR       = SDL2/32/lib/
LIBS          = -lSDL2 -lSDL2main

#获取所有的.c文件
SOURCES       = $(wildcard *.c $(SRC_FLASH)/*.c $(SRC_GUI)/*.c $(SRC_MISC)/*.c $(SRC_USER)/*.c $(SRC_FONT)/*.c)

#将.c文件替换成.o文件
OBJECTS       = $(SOURCES:.c=.o)

#链接规则
$(TARGET): $(OBJECTS)
	$(CC) $(CFLAGS) -o $@ $^ -L$(LIB_DIR) $(LIBS)

#编译规则
%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $< $(INCLUDE_DIR)

#.PHONY: clean

clean:
	@echo "Cleaning..."
	del /f /s /q .\*.o

Unterstützt MinGW. Kopieren Sie einfach, was Sie benötigen, damit Sie es in Zukunft nicht erneut schreiben müssen ~~

Supongo que te gusta

Origin blog.csdn.net/wangningyu/article/details/135020768
Recomendado
Clasificación