7

qmake を使用してスタティック ライブラリをビルドするときに、リンカーにオプションを提供したいと考えています。MSVC でビルドするときに、詳細なリンカー出力を取得したいとします。プロジェクト ファイルは次のようになります。

# mylib.pro
TEMPLATE = lib
TARGET = mylib
CONFIG += staticlib
QT += core
win32-msvc*: QMAKE_LFLAGS += /VERBOSE
unix: QMAKE_LFLAGS += -v

それがプロジェクトファイル全体です。その結果、オブジェクトが含まれていない空の静的ライブラリが作成されます。

どちらQMAKE_LFLAGSQMAKE_LFLAGS_STATIC_LIBももを設定してもLIBS、リンカーには影響しません。これらの変数に設定されたものは、Makefile にもなりません。機能する場合は、特定のプラットフォームに応じて、コマンド ラインでリンカを表示または渡すQMAKE_LFLAGSことを期待します。/VERBOSE-v

どのメイクファイル ジェネレーターを使用しても問題ありません。この動作は一貫しているようです。関心のある 2 つのプラットフォームは次のとおりです。

qmake -spec win32-msvc2008
qmake -spec macx-llvm

qmake のクロスプラットフォームの性質により、たまたま Qt がインストールされている任意のプラットフォームでテストできます。これは、Qt 4.8.4 と 5.1.1 の両方から qmake で再現されます。mkspec で指定されている msvc のバージョンは関係ありません。

4

1 に答える 1

6

staticlibプロジェクトでは、はLFLAGSリンカーに渡されません。実際、そのようなフラグを渡す方法は文書化されていません。

解決策はジェネレーターに依存します。

の場合msvc_nmakeLIBFLAGS代わりにリンカーに渡されます。詳細な出力を取得するには、次を追加できます

QMAKE_LIBFLAGS += /VERBOSE

それが機能することを確認するには、どのシステムでも、呼び出すことができqmake -spec win32-msvc2008ます。特定の msvc バージョンは重要ではありません。

forはリンカーを呼び出すために使用されるため、フラグを に追加する必要がありunixmakeます。詳細な出力を取得するには、次を追加できますARQMAKE_AR

QMAKE_AR += -v

qmake -spec macx-llvm確認するには、 ;を呼び出します。他の UNIX 仕様も同様に機能するはずです。

于 2013-09-06T17:34:35.490 に答える