-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
120 lines (96 loc) · 3.06 KB
/
Makefile
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
########################################################
# Makefile for OpenGL
# Uses GNU Make-specific extensions
# MinGW
# GCC 4.6.2
########################################################
# Build target
#
# ターゲットファイル (生成する実行ファイル)
ifeq ($(OS),Windows_NT) # for Windows
TARGET = a.exe
else # for Linux
TARGET = a.out
endif
########################################################
# Command settings
#
# C++ Compiler
CXX = g++
# Remove command
RM = rm
########################################################
# コンパイルオプションの設定
#
# 追加のインクルードパス
CXXFLAGS =
# リリース時のコンパイルオプション
#CXXFLAGS += -O3 -Wall
# デバッグ時のコンパイルオプション
CXXFLAGS += -g -pg -O0 -Wall
########################################################
# リンカオプションの設定
#
# 追加のライブラリ
#
ifeq ($(OS),Windows_NT) # for Windows
LDFLAGS = -lglew32 -lfreeglut -lglu32 -lopengl32 -lwinmm -lgdi32
else # for Linux
LDFLAGS = -lglut -lGLU -lGL
endif
# GUI アプリケーションをコンパイルする際のリンカオプション
#
# 真っ黒なコマンドプロンプトが出てきてイヤーンな人は、
# 以下のコメントを外してください。
#
#LDFLAGS += -mwindows
########################################################
########################################################
# コンパイルするソースファイルのあるディレクトリ
#
# ワイルドカード (*) も使えます。
# この例では、カレントディレクトリにある、すべてのC言語
# ソースファイルをコンパイルします。
#
INCLUDES = . ./* # 以下、必要なだけ ./*/* ./*/*/*... を繰り返す
########################################################
# 除外するファイル
#
# ワイルドカード (*) も使えます。
# ここで指定されたファイルはコンパイルされません。
# テスト用のソースファイルなどはここで指定してください。
#
EXCLUDES = ./XMesh/XLoader_sub.cpp
########################################################
# ソースファイルの検索 / 除外
#
SRC := $(wildcard $(addsuffix /*.cpp, $(INCLUDES)))
SRC := $(filter-out $(wildcard $(EXCLUDES)), $(SRC))
OBJS := $(SRC:.cpp=.o)
DEPENDS :=$(SRC:.cpp=.d)
########################################################
# サフィックスルール
#
# *.cpp ファイルから *.oファイルを生成 (コンパイル)
.SUFFIXES: .cpp .o
.cpp.o:
$(CXX) -c -o $@ $(CXXFLAGS) $<
########################################################
# make ビルドルール
#
# all: (default target)
.PHONY: all
all: $(TARGET)
# clean: 生成したターゲット (*.o) を削除
.PHONY: clean
clean:
$(RM) $(OBJS) $(DEPENDS)
# TARGET: ターゲットファイルのビルド
$(TARGET): $(OBJS)
$(CXX) $^ $(CXXFLAGS) $(LDFLAGS) -o $@
# ヘッダーファイルの依存関係
%.d: %.cpp
@set -e; $(CXX) -MM $(CXXFLAGS) $< \
| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
[ -s $@ ] || rm -f $@
-include $(DEPENDS)