Compare commits
3 Commits
Author | SHA1 | Date |
---|---|---|
Ковалев Роман Евгеньевич | 3a1374e1ed | |
Ковалев Роман Евгеньевич | 7062a95221 | |
Ковалев Роман Евгеньевич | f533b6f197 |
|
@ -9,8 +9,7 @@
|
|||
],
|
||||
"compilerPath": "C:/MinGW/bin/g++.exe",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++11",
|
||||
"intelliSenseMode": "gcc-x86"
|
||||
"cppStandard": "c++11"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
|
|
|
@ -2,28 +2,13 @@
|
|||
"tasks": [
|
||||
{
|
||||
"type": "cppbuild",
|
||||
"label": "C/C++: g++.exe сборка активного файла",
|
||||
"command": "C:/MinGW/bin/g++.exe",
|
||||
"label": "C/C++: make сборка",
|
||||
"command": "make",
|
||||
"args": [
|
||||
"-fdiagnostics-color=always",
|
||||
"${workspaceRoot}/src/*.cpp",
|
||||
"${workspaceRoot}/../dependencies/glad/src/glad.c",
|
||||
|
||||
"-I${workspaceRoot}/include",
|
||||
|
||||
"--std=c++11",
|
||||
|
||||
"-I${workspaceRoot}/../dependencies/GLFW/include",
|
||||
"-L${workspaceRoot}/../dependencies/GLFW/lib-mingw",
|
||||
"-I${workspaceFolder}/../dependencies/glad/include",
|
||||
"-static",
|
||||
"-lopengl32",
|
||||
"-lglfw3dll",
|
||||
"-o",
|
||||
"${workspaceRoot}/${workspaceFolderBasename}.exe"
|
||||
"${input:target}"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${fileDirname}"
|
||||
"cwd": "${workspaceRoot}"
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$gcc"
|
||||
|
@ -35,5 +20,13 @@
|
|||
"detail": "Задача создана отладчиком."
|
||||
}
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"id": "target",
|
||||
"description": "Цель сборки (all, list, clean)",
|
||||
"default": "all",
|
||||
"type": "promptString"
|
||||
},
|
||||
],
|
||||
"version": "2.0.0"
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
# Компилятор и директория проекта
|
||||
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
|
||||
|
||||
# Опции линкера
|
||||
LDFLAGS += --std=c++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
|
Loading…
Reference in New Issue