5

次のような(部分的な)qmakeプロジェクトファイルがあります:

TEMPLATE=lib
TARGET=whatever
SOURCES=whatever.cpp
HEADERS=whatever.h

これにより、少なくともデフォルトでは、次のようなライブラリといくつかのシンボリック リンクが作成されます。

libwhatever.so -> libwhatever.so.0.1.0
libwhatever.so.0 -> libwhatever.so.0.1.0
libwhatever.so.0.1 -> libwhatever.so.0.1.0
libwhatever.so.0.1.0

libwhatever.so.0.1.0は実際のライブラリ バイナリで、残りは単なるシンボリック リンクです。

私が達成したいのは、シンボリックリンクがまったく作成されないか、順序が逆であるためlibwhatever.so、実際のバイナリになり、残りがシンボリックリンクになることです。

4

5 に答える 5

6

以下を pro ファイルに追加できます。

CONFIG += unversioned_libname unversioned_soname

私は成功をテストしました。

于 2016-10-26T07:25:10.560 に答える
5

QMAKE_LN_SHLIB変数をno-opでオーバーライドすると、シンボリックリンクは作成されません。

QMAKE_LN_SHLIB       = :
于 2010-03-20T20:24:35.237 に答える
2

私はswarfratによって投稿された提案を試みましたが、それは機能しますが、(かなり役立つ)メッセージでエラーを出力します:

Error 1 (ignored)

したがって、エラーを生成せずにシンボリックリンクを削除する別の方法を次に示します。

unix: QMAKE_POST_LINK = find $$DESTDIR -maxdepth 1 -type l -exec rm -f {} \;

この qmake 変数の詳細については、こちらを参照してください。

于 2012-06-15T02:26:48.080 に答える
1

qmake のソースと mkspec を調べましたが、シンボリック リンクの生成はかなりハードワイヤードのようです。

ソースで見つけたものから、pluginCONFIGに追加すると、シンボリックリンクなしでライブラリのみが生成されるようです。

ただし、そうすることで他の副作用があるかどうかはわかりません。しかし、ビルド後に実行するスクリプトを作成せずにシンボリック リンクを削除する唯一の方法のようです。

于 2009-11-27T16:06:00.800 に答える
0

なぜそれが重要なのかについてのヒントを教えていただけると助かります...

方法については、ビルド プロセスの最後に実行されるスクリプトを好みに合わせて再配置することを検討してください。

于 2009-07-02T17:40:20.080 に答える