2
スタックオーバーフローからの提案をコピー/貼り付けすることで恐ろしい外観のMakefileを書いたことがあります。しかし、明示的なコンパイラ呼び出しを何度も提供する必要はないかもしれないと私は読んでいます(たとえば、-O3フラグはどこにでもあります)。このMakefileを単純化するには?メイクファイルの簡略化
CFLAGS = -Weverything -Wno-padded -Wno-unused-parameter -Wno-unused-variable -Wno-sign-conversion
all: fianchetto.o util.o ttable.o movegen.o
clang -O3 $(CFLAGS) -D NDEBUG $^ -o fianchetto
debugf: fianchetto.o ttable.o movegen.o
clang -O3 $(CFLAGS) -g3 $^ -o fianchetto
clean:
rm *.o && rm *.gch & rm fianchetto && rm -rf fianchetto.dSYM
%.o: %.c
clang -O3 -c $(CFLAGS) $< -o [email protected]
fianchetto.o: fianchetto.c
ttable.o: ttable.h ttable.c
movegen.o: movegen.h movegen.c
util.o: util.h util.c
私は多くの構文で謎に包まれていますが、なぜ単純化が機能するのかについてのリンクや説明がわかります!あなたが作るのビルトインルールを再発明している
CPPFLAGS
にする必要があります)
O3フラグの下の最初の行を必要としない場合があります:CFLAGSマクロにそれを組み込みます。 – Evert
あなたの 'clean'コマンドに'& 'が1つあります。おそらくそれは他のものと同様に '&&'でなければなりません。 – Evert
ほとんどの場合、 '.o'ファイル名とハードコードされた依存関係規則(これは不完全であるように見えます)の繰り返しを除いて大丈夫です:Cソースファイルは他のヘッダファイルに依存しません。独自のものよりも)依存関係は最適なコンパイラによって生成されます。新しくリビルドする場合は必要ありませんが、増分リビルドの場合にのみ必要です。リビルド中に取得することもできます。 – Kaz