سؤال

لديك ملف 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؟

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