ときTEMPLATE = libがターゲットにシンボリックリンクを作成しないようにqmakeのを強制するには?
質問
私はこのような(部分)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
は、実際のバイナリと休息になるように、他の方法で回避することが何の全部または順序で作成されていないということですが、シンボリックリンクです。
解決
QMAKE_LN_SHLIB = :
他のヒント
私が提案swarfratにより投稿しようとしましたが、それは動作しますが、それは(かなり役に立つ)メッセージとエラーを出力します:
Error 1 (ignored)
だから、ここすべてのエラーを発生させることなく、シンボリックリンクを削除する別の方法があります:
unix: QMAKE_POST_LINK = find $$DESTDIR -maxdepth 1 -type l -exec rm -f {} \;
このqmakeの変数の詳細については、<のhref = "http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#qmake-post-link" のrel =」見つけることができますnofollowを」タイトル= "QMAKE_POST_LINK">ここを。
あなたがプロファイルに以下を追加することができます:
CONFIG += unversioned_libname unversioned_soname
私は成功するテストしています。
私はqmakeの源とmkspecsを学んだが、シンボリックリンクの生成はかなりハードワイヤードであると思われます。
私はソースに見つけたものから、あなたがCONFIGにplugin
を追加した場合、唯一のライブラリがシンボリックリンクせずに、生成されるであろうと思われます。
でも、私はあなたを伝えることはできません。しかし、ビルド後に実行するスクリプトを記述することなく、シンボリックリンクを取り除くための唯一の方法であるように思われる。
あなたは私たちにいくつかのヒントを与えた場合、それはのように、それが重要な理由に役立つかもしれない...
どのようとして、あなたは、ビルドプロセスの最後に実行され、あなたの好みに合わせて物事を再配置するスクリプトを考えるかもしれません。