jamplus を使用して、ベンダーのクロスプラットフォーム プロジェクトを構築しています。osx では、C ツールのコマンド ライン (clang を介して ld に供給) が長すぎます。
応答ファイルは、長すぎるコマンド ラインに対する古典的な答えです。jamplus はマニュアルで、応答ファイルをその場で生成できると述べています。
マニュアルの例は次のようになります。
actions response C++
{
$(C++) @@(-filelist @($(2)))
}
もうすぐそこ!C.Link コマンドを具体的に吹き飛ばすと、次のようになります。
actions response C.Link
{
"$(C.LINK)" $(LINKFLAGS) -o $(<[1]:C) -Wl,-filelist,@($(2:TC)) $(NEEDLIBS:TC) $(LINKLIBS:TC))
}
私の jamfile では、リンカにパススルーするために必要なコマンド ラインを取得しますが、応答ファイルは改行で終了していないため、リンクは失敗します (osx ld では改行で区切られたエントリが必要です)。
- 改行で結合された jamplus リストを展開する方法はありますか?
$(LIST:TCJ=\n)
運が悪い場合は、結合拡張を使用してみました。$(LIST:TCJ=@(\n))
どちらも機能しません。これができれば、生成されたファイルは正しいはずです。 - そうでない場合、clang のリンク コマンドをオーバーライドし、リストからオンザフライでコンテンツを生成するために、どの jamplus コードを使用できますか? これを処理する最も侵襲の少ない方法を探しています。理想的には、リンクが必要な場所に新しい間接的なターゲットを追加するのではなく、ツールを直接変更/オーバーライドします。