私のmakefileはリンクコマンドを定義しています:
prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) $(PROD_OBJS)
ここ$(PROD_OBJS)
で、は次の形式のオブジェクトファイルのリストです。
PROD_OBJS = objfile1.obj objfile2.obj objfile3.obj ... objfileN.obj
これで、makefile自体がプロジェクトディレクトリのルートにあります。ルートにオブジェクトファイルとリストファイルがあると面倒になります。サブフォルダーに入れたいと思います。
objファイルのビルドとサブフォルダーへの出力は機能します。サフィックスと推論を使用して実行しています。
.s.obj:
$(ASSEMBLY) $(FLAGS) $*.s -o Objects\$*.obj
問題は、Objects
フォルダをlinkコマンドに渡すことです。
私は試した:
prod_link = $(LINK) $(LINK_FLAGS) -o$(PROD_OUT) Objects\$(PROD_OBJS)
ただし、オブジェクトファイルのリストの最初のファイルのみがフォルダの名前を取得します。
Objects
リストのすべてのファイルにサブフォルダーを渡すにはどうすればよい$(PROD_OBJS)
ですか?
編集
私もやってみました
PROD_OBJS = $(patsubst %.ss,Object\%.obj, $(PROD_SRC))
しかし得た:
makefile(51) : fatal error U1000: syntax error : ')' missing in macro invocation
Stop.
これはかなり奇妙です...