ソースファイル、実行ファイルのディレクトリを指定したmakefileを書く
ゴールデンウィークを誤差逆伝播法のコーディングに捧げたんですが、今もコーディングを続けてます。
https://github.com/crakaC/back_propagation
それで、今までmakefileはソースファイルと同じディレクトリに突っ込んでたけど、SublimeTextでmakeするときうまく行かなかった。
srcディレクトリを開けばSublimeTextからmakeできるんだけど、それだと.gitignoreとかREADME.mdを編集できないので、プロジェクトのルートにmakefileを移して、色々参考にして書き直した。
CC=g++ CFLAGS=-Wall -O3 .SUFFIXES = .cpp SRC_DIR = src BUILD_DIR = bin SRCS:=$(wildcard $(SRC_DIR)/*.cpp) OBJS:=$(SRCS:.cpp=.o) TARGET = backpropagation .PHONY: all clean all: $(BUILD_DIR) $(patsubst %,$(BUILD_DIR)/%,$(TARGET)) $(BUILD_DIR): mkdir $(BUILD_DIR) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp $(CC) -c $(CFLAGS) -o $@ $&^; $(BUILD_DIR)/$(TARGET): $(patsubst $(SRC_DIR)/%,$(BUILD_DIR)/%,$(OBJS)) $(CC) $(CFLAGS) -o $@ $^ clean: $(RM) -r $(BUILD_DIR) #依存関係(5/15再編集) $(BUILD_DIR)/mylib.o: $(patsubst $(SRC_DIR)/%,$(BUILD_DIR)/%, mylib.hpp struct.hpp Net.hpp) $(BUILD_DIR)/Net.o: $(patsubst $(SRC_DIR)/%,$(BUILD_DIR)/%, Net.hpp struct.hpp) $(BUILD_DIR)/Net_setter_and_getter.o: $(patsubst $(SRC_DIR)/%, $(BUILD_DIR)/%, Net.hpp struct.hpp ) $(BUILD_DIR)/struct.o: $(patsubst $(SRC_DIR)/%,$(BUILD_DIR)/%, struct.hpp)
今時makefile書いてmakeするくらいだったらVisualStudioでさくっと作れよって話。
でもSublimeText軽いし便利だしXubuntuならgitでバージョン管理も楽だし便利だしなかなかむずい。
参考