-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
98 lines (77 loc) · 3.26 KB
/
Copy pathmakefile
File metadata and controls
98 lines (77 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
CXX = g++
MAIN = main
DLL_NAME = JDMC
DLL_SPRITE = JDMCSprite
DLL_CONS = JDMCApplication
ALL_DLL = -l$(DLL_NAME) -l$(DLL_CONS) -l$(DLL_SPRITE)
DLL_DIR = Build
BIN_DIR = Build
I1 = -IJDMC
I2 = -IJDMC/Headers
INCLUDE = $(I1) $(I2)
SRC_DIR = JDMC/Source
OBJ_DIR = JDMC/Object
SRC_DIRS = $(SRC_DIR)
SOURCES = $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.cpp))
OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SOURCES))
SPRITE_SRC = $(SRC_DIR)/Sprites
SPRITE_SOURCES = $(foreach dir, $(SPRITE_SRC), $(wildcard $(dir)/*.cpp))
SPRITE_OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SPRITE_SOURCES))
CONSOLE_DIR = ConsoleApplication
CONSOLE_DIR = ConsoleApplication
CONSOLE = $(CONSOLE_DIR)
C_SOURCES = $(foreach dir, $(CONSOLE), $(wildcard $(dir)/*.cpp))
C_OBJECTS = $(patsubst $(CONSOLE_DIR)/%.cpp, $(CONSOLE_DIR)/%.o, $(C_SOURCES))
JDMC_DLL = $(DLL_DIR)/$(DLL_NAME).dll
JDMC_SPRITE_DLL = $(DLL_DIR)/$(DLL_SPRITE).dll
CONSOLE_DLL = $(DLL_DIR)/$(DLL_CONS).dll
EXECUTABLE = $(BIN_DIR)/$(MAIN).exe
all: clean $(EXECUTABLE) exec
$(EXECUTABLE): $(JDMC_DLL) $(JDMC_SPRITE_DLL) $(CONSOLE_DLL)
@echo ===================================================
@echo - Compiling the Main executable...
@if not exist $(BIN_DIR)\$(MAIN).exe $(CXX) main.cpp -o $(EXECUTABLE) -L$(DLL_DIR) $(ALL_DLL) $(INCLUDE)
@echo - [SUCCESS] Main executable compiled: $(EXECUTABLE)
$(JDMC_DLL): $(OBJECTS)
@echo ===================================================
@echo - Creating JDMC DLL...
@$(CXX) -shared -o $(JDMC_DLL) $(OBJECTS) $(INCLUDE)
@echo - [SUCCESS] JDMC DLL created: $(JDMC_DLL)
$(JDMC_SPRITE_DLL): $(SPRITE_OBJECTS)
@echo ===================================================
@echo - Creating JDMCSprite DLL...
@$(CXX) -shared -o $(JDMC_SPRITE_DLL) $(SPRITE_OBJECTS) $(INCLUDE) -L$(DLL_DIR) -l$(DLL_NAME)
@echo - [SUCCESS] JDMCSprite DLL created: $(JDMC_SPRITE_DLL)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR)
@echo ---------------------------------------------------
@echo - Compiling source file: $< ...
@$(CXX) -c $< -o $@ $(INCLUDE)
@echo - [SUCCESS] Compiled: $@
$(CONSOLE_DLL): $(C_OBJECTS)
@echo ===================================================
@echo - Creating CONSOLE DLL...
@$(CXX) -shared -o $(CONSOLE_DLL) $(C_OBJECTS) $(INCLUDE) -L$(DLL_DIR) -l$(DLL_NAME) -l$(DLL_SPRITE)
@echo - [SUCCESS] CONSOLE DLL created: $(CONSOLE_DLL)
$(CONSOLE_DIR)/%.o: $(CONSOLE_DIR)/%.cpp | $(CONSOLE_DIR)
@echo ---------------------------------------------------
@echo - Compiling console source file: $< ...
@$(CXX) -c $< -o $@ $(INCLUDE)
@echo - [SUCCESS] Compiled: $@
$(OBJ_DIR):
@echo ---------------------------------------------------
@echo - Creating Object Directories...
@echo ---------------------------------------------------
@echo - [INFO] Making Necessary Directories
@mkdir JDMC\Object\Sprites
@echo - [SUCCESS] Object directories created
clean:
@cls
@echo ---------------------------------------------------
@echo - Cleaning the Directory...
# @if exist $(BIN_DIR)\$(MAIN).exe del $(BIN_DIR)\$(MAIN).exe
@echo - [SUCCESS] Cleaning completed
exec:
@echo ===================================================
@echo - Running the executable...
@echo ===================================================
@$(BIN_DIR)/$(MAIN).exe