سؤال

أنا متورط في مشروع برمجيات مكتوبة في كيو تي وبنيت مع Qmake و GCC على Linux. علينا الارتباط بمكتبة جهة خارجية ذات جودة منخفضة إلى حد ما وتغمض الكثير من التحذيرات. أرغب في استخدام -W -WALL على التعليمات البرمجية المصدر الخاصة بنا، ولكن PASS -W إلى مكتبة الجهات الخارجية سيئة للحفاظ على وحدة التحكم خالية من الضوضاء والهوجين حتى نتمكن من التركيز على جودة التعليمات البرمجية لدينا.

في Qmake، هل هناك طريقة لإضافة cflags / cxxflags بشكل مشروط إلى بعض الملفات والمكتبات؟

هل كانت مفيدة؟

المحلول

jonathan، أعتقد أن المشكلة هي المكان الذي تضم فيه ملفات المصدر الخاصة بك ملفات الرأس من مكتبات الحزب الثالث، وتريد إيقاف التحذيرات من أجل الأخير.

كيفن، أعتقد أنه يمكنك استخدام Pragmas للتحذيرات: Pragmas تشخيص دولية

يمكنك إضافة هذه قبل وبعد أي #includes ل Libs الطرف الثالث.

نصائح أخرى

ماذا لو قمت بتضمين مكتبتك باستخدام النظام.

في ملف المشروع على سبيل المثال:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0

كيفن،

qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w

يجب أن تفعل (استخدم التكوين + = الإصدار إذا كنت ترغب في ...)

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

إذا كنت قد خلطت رمز مكتبة الطرف الثالث مع الكود الخاص بك، فقد قمت بتعيين نفسك للحصول على كابوس الصيانة.

كما كتب مارتن إضافة دليل التضمين عبر

QMAKE_CXXFLAGS += -isystem ...

قمع التحذيرات فقط في الرؤوس المعنية. لا حاجة إلى تعطيل تحذيرات لأي ملفات مصدر لمشروعك (أو حتى على نطاق المشروع) أو الفوضى مع #Pragmas أو ملفات الأغلفة.

لاحظ أنه إذا كنت تستخدم QtCreator، فستظل (أي بالإضافة إلى ذلك)، فأريد إضافة الدليل إلى INCLUDEPATH لذلك يختار المفهرس الرؤوس.

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