Копия с проекта 20
This commit is contained in:
102
Makefile
Normal file
102
Makefile
Normal file
@@ -0,0 +1,102 @@
|
||||
# Компилятор и директория проекта
|
||||
ifeq ($(OS), Windows_NT)
|
||||
# С возможностью сборки x32
|
||||
ifeq ($(MAKECMDGOALS), x32)
|
||||
CC = C:/MinGW/bin/g++.exe
|
||||
else
|
||||
CC = C:/MinGW64/bin/g++.exe
|
||||
endif
|
||||
PROJECT_DIR = $(shell echo %cd%)
|
||||
PATH_SEPARATOR = \\
|
||||
# Имя исполняемого файла
|
||||
EXECUTABLE = $(notdir $(strip $(PROJECT_DIR))).exe
|
||||
else
|
||||
CC = g++
|
||||
PROJECT_DIR = $(shell pwd)
|
||||
PATH_SEPARATOR = /
|
||||
# Имя исполняемого файла
|
||||
EXECUTABLE = $(notdir $(strip $(PROJECT_DIR)))
|
||||
endif
|
||||
|
||||
# Опции компилятора
|
||||
CFLAGS += -c
|
||||
CFLAGS += -I./include
|
||||
CFLAGS += -I../dependencies/GLFW/include
|
||||
CFLAGS += -I../dependencies/glad/include
|
||||
CFLAGS += -I../dependencies/glm
|
||||
CFLAGS += -I../dependencies/stb
|
||||
CFLAGS += -I../dependencies/tinyobjloader
|
||||
CFLAGS += -I../dependencies/tinyglTF
|
||||
|
||||
# Опции линкера
|
||||
LDFLAGS += --std=gnu++11
|
||||
# Архитектурозависимые опции линкера
|
||||
ifeq ($(OS), Windows_NT)
|
||||
# GLFW в зависимости от архитектуры
|
||||
ifeq ($(MAKECMDGOALS), x32)
|
||||
LDFLAGS += -L../dependencies/GLFW/lib-mingw
|
||||
else
|
||||
LDFLAGS += -L../dependencies/GLFW/lib-mingw-w64
|
||||
endif
|
||||
|
||||
LDFLAGS += -static
|
||||
LDFLAGS += -lglfw3dll
|
||||
LDFLAGS += -lopengl32
|
||||
else
|
||||
LDFLAGS += -lglfw
|
||||
LDFLAGS += -lGL
|
||||
endif
|
||||
|
||||
# Библиотека GLAD
|
||||
GLAD := ../dependencies/glad/src/glad.c
|
||||
GLAD_O := $(GLAD:.c=.o)
|
||||
|
||||
# Файлы из директории src
|
||||
SOURCES_C = $(wildcard src/*.c)
|
||||
SOURCES_CPP = $(wildcard src/*.cpp)
|
||||
|
||||
# Директория с объектными файлами
|
||||
OBJ_DIR := Obj
|
||||
# Объектные файлы
|
||||
OBJECTS = $(addprefix $(OBJ_DIR)/,$(SOURCES_C:src/%.c=%.o) $(SOURCES_CPP:src/%.cpp=%.o))
|
||||
|
||||
# Для x32 сборки под Windows
|
||||
ifeq ($(OS), Windows_NT)
|
||||
ifeq ($(MAKECMDGOALS), x32)
|
||||
x32: all
|
||||
endif
|
||||
endif
|
||||
|
||||
# Цель по умолчанию, зависит от EXECUTABLE
|
||||
all: $(EXECUTABLE)
|
||||
|
||||
# Цель сборки исполняемого файла, зависит от OBJ_DIR, OBJECTS и GLAD_O
|
||||
$(EXECUTABLE): $(OBJ_DIR) $(OBJECTS) $(GLAD_O)
|
||||
$(CC) $(OBJECTS) $(GLAD_O) $(LDFLAGS) -o $@
|
||||
|
||||
# Цель для сборки GLAD
|
||||
$(GLAD_O): $(GLAD)
|
||||
$(CC) $(CFLAGS) $< -o $@
|
||||
|
||||
# Цель для создания директории с объектными файлами
|
||||
$(OBJ_DIR):
|
||||
@mkdir $(OBJ_DIR)
|
||||
|
||||
# Цель сборки объектных файлов
|
||||
$(OBJ_DIR)/%.o: src/%.c
|
||||
$(CC) $(CFLAGS) $< -o $@
|
||||
$(OBJ_DIR)/%.o: src/%.cpp
|
||||
$(CC) $(CFLAGS) $< -o $@
|
||||
|
||||
# Цель вывода всех файлов, учавствтующих в сборке
|
||||
list:
|
||||
@echo "В сборке участвуют:" $(OBJECTS)
|
||||
|
||||
# Очистка
|
||||
ifeq ($(OS), Windows_NT)
|
||||
clean: $(OBJ_DIR)
|
||||
@rmdir /s /q $(OBJ_DIR)
|
||||
else
|
||||
clean: $(OBJ_DIR)
|
||||
@rm -f $(EXECUTABLE) $(OBJECTS)
|
||||
endif
|
||||
Reference in New Issue
Block a user