私のプロジェクトには外部ライブラリの依存関係があり、ビルドにはwafスクリプトを使用しています - C、C++。WAF - スタティックライブラリを結合
静的にリンクされているすべての依存ライブラリを持つ静的ライブラリを構築しようとしています。例えば、私は、動的共有オブジェクトを構築するために、これを使用します。
bld.program(features = 'c cxx cxxshlib'
, target = 'program'
, source = sources
, use = libs_list)
共有オブジェクトは、(libs_list
で指定)すべての依存ライブラリがリンクされています。 ただし、静的ライブラリ:
bld.program(features = 'c cxx cxxstlib'
, target = 'program'
, cppflags = '-DSTATIC_LIB'
, source = sources
, use = libs_list)
はありません。これを克服する方法はありますか?または、ポストビルド機能でこれを手動で行う必要がありますか?
たものであるため、実際には、この方法では、静的libには、すべての再帰的な依存関係が含まれますキーワードの使用によって指定されます。ご覧のとおり、libs_listは両方とも同じです(私があなたを正しく理解していれば)。 しかし、この問題はexternal - libexpat.aなどのライブラリで発生します。私の場合、libexpatは-Lexpatの共有オブジェクトにリンクされますが、静的ライブラリはリンクされません。 これらの外部ライブラリをすべてarに含めたいと思います。 – Mojo28
@mojo:どのコマンドが発行されたかを知るには、-hを使用します。コマンドが正常であれば、リスト内の静的ライブラリの順序が原因である可能性があります。 – neuro
ええ、私は-vを使用しましたが、libsは言及されておらず、オブジェクトファイルのみが記述されています。これはおそらく予想されます。問題は、静的ライブラリをarと1つにマージするのはそれほど簡単ではないということです。デフォルトではオブジェクトファイルのみを使用しています。おそらくこれがなぜこのことが不可能なのかということです。私はまた、すべての依存静的ライブラリのリストを取得する良い方法があるかどうかはわかりません。私はarを手動で実行しようとしています。このためには、すべての依存静的ライブラリのリストが必要です。現在、STLIB_%sで始まるすべての変数を取得するために、コンテキストenvを解析しています。私はこれが最高のやり方だとは思わない。 – Mojo28