マクロ呼び出しで使用できるようにするパターン ルールを作成しようとしています%
が、期待した結果が得られません。
パターンルール:
%.o: %.cpp $(%_H)
g++ -o $@ $(FLAGS) -c $<
問題は $(%_H) にあります
何らかの理由%
で、定義されているものに拡張されていません。
依存関係リストを印刷すると($^)
、ソース ファイルのみが印刷されます。
使用したい依存関係を設定する非常にクリーンな方法があります。
# Header Dependencies per object
Geometry_H:=Geometry.h $(Error_H)
Enemy_H:=Enemy.h $(Geometry_H) $(Error_H)
Surface_H:=Surface.h $(Geometry_H)
Player_H:=Player.h $(Geometry_H) $(Surface_H)
SDLWindow_H:=SDLWindow.h $(Surface_H) $(Error_H)
Path_H:=Path.h $(Geometry_H) $(Error_H)
Territory_H:=Territory.h $(Geometry_H)
Board_H:=Board.h $(Territory_H) $(Geometry_H) $(Player_H) $(Path_H) $(Enemy_H) $(Error_H)
Error_H:=Error.h
Diminisher_H:=Diminisher.h $(SDLWindow_H) $(Geometry_H) $(Surface_H) $(Board_H) $(Error_H)
Main_H:=$(Diminisher_H)
別の人は、これらの変数を依存関係リストに変更することを提案しました。
つまり Main_H:=$(Diminisher_H)
Main.o になります: $(Diminisher_H)
これは良い修正です、うまくいきます。$(%_H)
ただし、何らかの理由で無効であるという問題がまだ残っています。
(可能であれば)有効な式にする方法を知りたいです。
$( $%_H )
、$( $(%)_H )
、$( $(value %)_H )
およびその他多くのことを試しました。%
マクロ呼び出しでは意味を失っているようです。
%
マクロ呼び出しで使用する方法はありませんか?