このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ルールの依存項目に注意

次のようなパターンルールを書いていた。

%.o : %.cpp %.h stdafx.h.gch
	@echo Making object file
	$(CXX) $(CXXFlags) -c $<

これは、*.cppと*.hが揃ってないと発火しない。*.hがない*.cppだと、デフォルトルールが適用される。そうすると、コンパイラの名前とかオプションもデフォルトで、自分で設定したコマンドラインが実行されない。

で、トラブル。

今回は、gcc の -std=gnu++0x とかマクロ定義の -DHOGE とかが効いてなかった。エラーになってくれたからかえって良かった。実行時に変なことが起きると分からんだろうな。危ねえー。

次を追加して、ヘッダがないときはエラーとした。

%.o : %.cpp
	$(error Need header file for $<)