なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Makefileを書く

letsboost::asio
ここにあるコードを動かすためのMakefileを書いてみる。

解説
・TARGET できあがった時の実行ファイル名
・SRCS  ソースファイル(Source File)
・OBJECTS オブジェクトファイル

・CPPFLAGS ソースファイルをオブジェクトファイルに固めるときのやつ
・LDFLAGS オブジェクトファイルを実行ファイルに固めるときのやつ

・「AsioSample.o :」のコロンの右側には依存しているヘッダファイルとかも書いたりする。今回は無いので省略。
・'-lboost〜という記述が続いているのは、いちいちMakefileを書き直すのがめんどくさいから。全てリンクさせる。フリーソフトMakefileを見るとたいがいこんな感じで意味不明になっている。
・-Wall…エラーがあったら警告を出してもらう -D_WIN32_WINNT=0x0601…「=」の後はWindowsの機種別

# Makefile
TARGET 	= AsioSample.exe
SRCS 	= AsioSample.cpp
OBJECTS = AsioSample.o

RM := rm
CXX := g++
CC := g++

CPPFLAGS = -O2 -Wall -D_WIN32_WINNT=0x0601 -I/c/MinGW/include -I/c/Boost
LDFLAGS  = -L/c/MinGW/lib -lws2_32 \
-lboost_chrono-mgw45-mt-1_47 \
-lboost_date_time-mgw45-mt-1_47 \
-lboost_exception-mgw45-mt-1_47 \
-lboost_filesystem-mgw45-mt-1_47 \
-lboost_graph-mgw45-mt-1_47 \
-lboost_iostreams-mgw45-mt-1_47 \
-lboost_math_c99-mgw45-mt-1_47 \
-lboost_math_c99f-mgw45-mt-1_47 \
-lboost_math_c99l-mgw45-mt-1_47 \
-lboost_math_tr1-mgw45-mt-1_47 \
-lboost_math_tr1f-mgw45-mt-1_47 \
-lboost_math_tr1l-mgw45-mt-1_47 \
-lboost_prg_exec_monitor-mgw45-mt-1_47 \
-lboost_program_options-mgw45-mt-1_47 \
-lboost_random-mgw45-mt-1_47 \
-lboost_regex-mgw45-mt-1_47 \
-lboost_serialization-mgw45-mt-1_47 \
-lboost_signals-mgw45-mt-1_47 \
-lboost_system-mgw45-mt-1_47 \
-lboost_test_exec_monitor-mgw45-mt-1_47 \
-lboost_thread-mgw45-mt-1_47 \
-lboost_unit_test_framework-mgw45-mt-1_47 \
-lboost_wave-mgw45-mt-1_47 \
-lboost_wserialization-mgw45-mt-1_47 \


# make
all : $(TARGET)
$(TARGET) : $(OBJECTS)
		$(CXX) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
AsioSample.o :
		$(CXX) -c AsioSample.cpp $(CPPFLAGS)
		
# make clean
.PHONY: clean
clean:
	rm -f *.o