Makefile
ルールが複雑で見辛い
code:Makefile
BUILD_DIR := ./build
OBJ_DIR := $(BUILD_DIR)/obj
SOURCES := $(wildcard src/*.cpp)
OBJS := $(addprefix $(OBJ_DIR)/, $(patsubst src/%.cpp, %.o, $(SOURCES)))
$(OBJ_DIR)/%.o: src/%.cpp
clang++ $(CXXFLAGS) -o $@ -c $<
$(OBJ_DIR)/%.d: src/%.cpp
clang++ $(CXXFLAGS) -MM $< > $@
$(eval OBJ = $(@:.d=.o))
sed --in-place 's|$(notdir $(OBJ))|$(OBJ)|' $@
多分これが一番いいと思います
このルールはコンパイルしかしてくれない(リンクコマンド省略)
これを書いて半年、mesonを知ったりMakefileを書いたりCMakeListsを書いたりしてちょっと変わった
ビルド自動化ツールとしてのMakefileは、人間が手書きするものではない気がする
人間が書くMakefileはせいぜい便利コマンドまとめ程度で良い
どうせ自動生成するならninjaで良い
NeovimはMakefileをcmakeコマンドのwrapperとして用いており、こういう使い方も悪くないなと思った
同じディレクトリにMakefileとCMakeLists.txtがあるのは混乱の元となりそうだが
READMEをちゃんと読め!