2

DLL のみのビルドに固有のフラグを指定するにはどうすればよいですか。デフォルトでは libtool が追加されます-DDLL_EXPORTが、これは GNU 規則に従うほとんどのプロジェクトでは問題ありませんが、たとえば Boost を使用する場合は、ライブラリ フラグを指定する必要がある場合があります-DDLL_EXPORT -DBOOST_ALL_DYN_LINK。 DLL/SO ビルドの特定の定義。

残念ながら、libtool でこれを行う方法が見つかりません。どのフラグを使用すればよいですか?

PS: CMake への移行を提案しようとさえしないでください。

例:

バーにリンクするライブラリ foo を使用し、動的ライブラリのみのシンボルを取得するには -DBAR_EXPORTS が必要です。

のようなものはありますか

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

誰か?

代替ソリューション: (かなり醜い)

ファイル `defines.h を作成します。

#if defined(PIC) || defined(DLL_EXPORT)
#define BAR_EXPORTS
#endif

その後:

 libfoo_la_CXXFLAGS += -include defines.h

醜いが動作するはずです。

4

2 に答える 2

0

それほどきれいではありませんが、条件を使用して DLL_EXPORT が定義されているかどうか、および必要な他のものを定義しているかどうかを確認できますか?

私はautotoolsが得意ではありません.CMakeの方が好きですが、あなたはそれに反対しているようです.

于 2010-01-21T17:31:59.987 に答える
0

デフォルトで共有ライブラリの構築を無効にすることができます

LT_INIT([disable-shared])

共有ライブラリが明示的に要求されている場合は、追加の定義をAM_CONDITIONAL組み合わせて使用​​できます。--enabled-sharedIOW、静的または共有のビルドを有効にしますが、同時に両方を有効にすることはできません。

于 2010-01-24T03:02:38.930 に答える