كيف تحدد تبعية ملف مكتبة ل Qmake في كيو تي؟
-
13-09-2019 - |
سؤال
لديك ملف somelib.pro يحتوي على:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
ثم في someapp.pro المعالين:
..
debug:LIBS += -lSomeLib_debug
..
كيف يمكنني إجبار SomePP على بناء ما إذا كنت قد لمست Somelib في Qmake؟
المحلول
إنه قبيح لأنك تحتاج إلى إعطاء اسم ملف مكتبة بالضبط، ولكن يجب أن يعمل هذا:
TargetDeps + = libfoo.a
نصائح أخرى
سيقوم Creator QT بالعمل إذا قمت بالنقر فوق "إضافة مكتبة ..." في قائمة سياق المشروع الذي يجب أن يتضمن المكتبة.
يتم تكوين هذه المتغيرات تلقائيا لك:
- ليبس
- includepath.
- dependatrath.
- pre_targetdeps.
أنظر أيضا http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html.
ردا على تعليق Zahir، ربما يستحق الإشارة إلى أن توضيح هذا التبعية في ملفات Qmake غير ضرورية إذا كنت تستخدم DLLs، ولكن أساسى إذا كان EXE يعتمد على مكتبة ثابتة.
qmake
لا يوفر هذه القدرة.
بدلا من ذلك، ضع التطبيق الخاص بك و Lib في الدلائل الفرعية، ثم قم بإنشاء Makefile في الدليل الودي الذي يبدو مثل هذا:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
ثم يدير دائما make
من هذا الدليل.
انا إستعملت:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
إنه يعمل، ولكنه خرقاء لأنه من الضروري تحديد المسار الكامل للمكتبة، والذي يختلف عن كل نظام تشغيل / مترجم.
من المؤكد أنه لا يمكن أن يكون ذلك ممكنا، فأنت تتحدث عن استخدام Qmake للقيام بإجراء بحث عكسي التبعية؟ إذن ما تريده هو لبناء التطبيق B (وأي تطبيق آخر يعتمد على المكتبة أ) بعد إجراء تغيير إلى المكتبة أ؟
هذا مثل القول إعادة ترجمة جميع تطبيقات Visual Basic إذا تم تحديث VBRun300.dll؟