تحذيرات تعطيل مشروط مع Qmake / GCC؟
-
13-09-2019 - |
سؤال
أنا متورط في مشروع برمجيات مكتوبة في كيو تي وبنيت مع 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
لذلك يختار المفهرس الرؤوس.