他の人が書いたパッケージがあります。そのパッケージ内のファイルを変更できません。そのパッケージには、次のようなルールを持つ Makefile があります。
$(BIN)/progA: <long list of .o files>
$(LINK.cc) $^ -o $@
その Makefile の周りに GNU make "wrapper" を記述して、同じ .o ファイルのリストからのバイナリではなくライブラリを構築したいと考えています。理想的には、次のようなものが欲しいです:
include package/Makefile
$(LIB)/progA.so: <magically copy the prerequisites for $(BIN)/progA>
$(LD) -shared $(LDFLAGS) $^ $(LIBS) -o $@
もちろん、パッケージの Makefile から自分のリストにコピー アンド ペーストすることもできますが、そのパッケージは頻繁に更新されます。ビルド プロセスが Makefile 内のパッケージの変更に対する変更を魔法のように自動的に取得することを好みます。
私の唯一の他の解決策は複雑なものです: sed または awk または perl を使用してパッケージの Makefile をスキャンし、その .o ファイルのリストを取り出して、ラッパーの make ファイルの変数に割り当てます。できれば避けたいところです。