# mingwの4.9.1では、 # >mingw32-make # で起動する CC = g++ CFLAGS = -g -std=c++11 INCLUDE = -I./include -I"C:\opencv\build\include" LDFLAGS = -L"C:\opencv\build\x64\test_mingw\lib" LIBS = -lopencv_core310 SRCS = $(wildcard *.cpp) # 全部のcppファイルを片っ端から拾う # 上記は、以下の内容を実施している #SRCS = api.cpp common_utils.cpp FlowGraph.o MaxFlowPathOptimizer.cpp PassengerVectorIntegrator.cpp SequentialCsvReader.cpp SimpleLogWriter.cpp StationTable.cpp TransporterResourceProposer.cpp TransporterResourceTable.cpp OBJS = $(SRCS:.cpp=.o) #SRCSの各ファイルのサフィックスの.cppを.oに変換 # 上記は、以下の内容を実施している #OBJS = api.o common_utils.o FlowGraph.o MaxFlowPathOptimizer.o PassengerVectorIntegrator.o SequentialCsvReader.o SimpleLogWriter.o StationTable.o TransporterResourceProposer.o TransporterResourceTable.o PROGRAM = TransporterResourceProposerDll.dll .cpp.o: $(CC) $(CFLAGS) -c $(INCLUDE) $(LDFLAGS) $< -o $@ # 上記は、以下の内容を実施している # g++ -g -std=c++11 -c -I./include -I"C:\opencv\build\include" -o api.o api.cpp # g++ -g -std=c++11 -c -I./include -I"C:\opencv\build\include" -o common_utils.o common_utils.cpp # ..... $(PROGRAM): $(OBJS) $(CC) $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -shared -o $(PROGRAM) # 上記は、以下の内容を実施している # g++ -I./include -I"C:\opencv\build\include" -g -std=c++11 -L"C:\opencv\build\x64\test_mingw\lib" api.o common_utils.o .... TransporterResourceTable.o (ここの改行は取り除く) # -lopencv_calib3d310 -lopencv_core310 -shared -o TransporterResourceProposerDll.dll .PHONY: clean clean: del *.o *.exe *.dll
# Makefileの説明は、これが秀逸 → http://shin.hateblo.jp/entry/2012/05/26/231036 # "gmake"で実行 # 無理にマクロなんか使わない(よけい分からなくなる) .PHONY: all all: ca-server ca-client ca-track ca-wire ca-operation1 ca-operation2 ca-monitor ca-server: ca-server.o ca-tools.o ca-init.o ca-mediate.o c-anemone.h ca-tools.h ca-init.h ca-mediate.h gcc -g -o ca-server ca-server.o ca-tools.o ca-init.o ca-mediate.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-client: ca-client.o ca-tools.o ca-init.o ca-track-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-client ca-client.o ca-tools.o ca-init.o ca-track-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-track: ca-client.o ca-tools.o ca-init.o ca-track-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-track ca-client.o ca-tools.o ca-init.o ca-track-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-wire: ca-client.o ca-tools.o ca-init.o ca-wire-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-wire ca-client.o ca-tools.o ca-init.o ca-wire-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-operation1: ca-client.o ca-tools.o ca-init.o ca-operation1-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-operation1 ca-client.o ca-tools.o ca-init.o ca-operation1-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-operation2: ca-client.o ca-tools.o ca-init.o ca-operation2-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-operation2 ca-client.o ca-tools.o ca-init.o ca-operation2-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows ca-monitor: ca-client.o ca-tools.o ca-init.o ca-monitor-init.o c-anemone.h ca-tools.h ca-init.h gcc -g -o ca-monitor ca-client.o ca-tools.o ca-init.o ca-monitor-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows .PHONY: clean clean: del *.o *.exe #ヘッダファイルの依存関係 (gcc -MM ca-server.cpp で調べられる) ca-server.o: ca-server.cpp c-anemone.h ca-tools.h ca-init.h ca-mediate.h ca-client.o: ca-client.cpp c-anemone.h ca-tools.h ca-init.h ca-track-init.o: ca-track-init.cpp c-anemone.h ca-tools.h ca-wire-init.o: ca-wire-init.cpp c-anemone.h ca-tools.h ca-operation1-init.o: ca-operation1-init.cpp c-anemone.h ca-tools.h ca-operation2-init.o: ca-operation2-init.cpp c-anemone.h ca-tools.h ca-monitor-init.o: ca-monitor-init.cpp c-anemone.h ca-tools.h ca-init.o: ca-init.cpp c-anemone.h ca-tools.o: ca-tools.cpp c-anemone.h ca-tools.h