كيفية فرض كماكي عدم خلق روابط رمزية لاستهداف عندما TEMPLATE = ليب؟

StackOverflow https://stackoverflow.com/questions/1074050

  •  21-08-2019
  •  | 
  •  

سؤال

ولدي (جزئي) كماكي ملف مشروع من هذا القبيل:

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 مع عدم المرجع، فإنه لن جعل الروابط رمزية.

QMAKE_LN_SHLIB       = :

نصائح أخرى

وحاولت أن اقتراح المرسلة بواسطة swarfrat، وأنه يعمل ولكن النواتج خطأ مع رسالة (مفيدة إلى حد ما):

Error 1 (ignored)

وهكذا، وهنا هو طريقة أخرى لحذف روابط الرمزية دون توليد أية أخطاء:

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

ويمكن الاطلاع على مزيد من المعلومات حول هذا المتغير كماكي <لأ href = "http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#qmake-post-link" يختلط = " نوفولو "عنوان =" QMAKE_POST_LINK "> هنا .

ويمكنك إضافة أدناه لملف الموالية الخاص بك:

CONFIG += unversioned_libname unversioned_soname

ولقد اختبرت النجاح.

ودرست مصادر كماكي وmkspecs، ولكن يبدو أن الجيل الروابط رمزية هي ماثلة إلى حد ما.

ومن ما وجدته في المصادر، ويبدو أنه إذا قمت بإضافة plugin إلى CONFIG، فقط سيتم إنشاء المكتبة، من دون وصلات رمزية.

لا أستطيع أن أقول لكم إذا كان ذلك له أي آثار جانبية أخرى، على الرغم من. ولكن يبدو أن الطريقة الوحيدة للتخلص من روابط رمزية دون الحاجة إلى كتابة السيناريو الذي يمتد بعد بناء.

ويمكن أن يساعد إذا قدم لنا بعض التلميح لماذا يهم ...

وأما عن كيفية، قد تفكر في السيناريو الذي سيتم إعادة ترتيب الأمور ترضيك التي يتم تشغيلها في نهاية عملية الإنشاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top