Ninja: طلب الميزة: مطابقة اسم القاعدة الأكثر مرونة في أداة compdb

تم إنشاؤها على ٢٠ سبتمبر ٢٠١٥  ·  12تعليقات  ·  مصدر: ninja-build/ninja

حاليًا ، لاستخدام أداة compdb ، تحتاج إلى معرفة الاسم الدقيق للقواعد التي تريد الاستعلام عنها. هذا يعمل بشكل جيد بشرط أن تكون هذه الأسماء قابلة للتنبؤ ، ولكن هذا ليس بالضرورة هو الحال بالنسبة لبعض المولدات.

أبرزها ، في الإصدار 3.2 (على ما أظن) ، بدأ مُنشئ النينجا الخاص بـ CMake في إنشاء قواعد النموذج <lang>_COMPILER__<directory> . هذا يعني أنه من أجل الاستعلام عن قاعدة بيانات الترجمة ، تحتاج أولاً إلى مسح شجرة دليل المشروع ، أو اللجوء إلى الاختراقات الأخرى. يُنشئ CMake قبل 3.2 قواعد النموذج <lang>_COMPILER مما أتاح لهم الاستعلام من الأدوات العامة - دون معرفة محددة بالمشروع.

ومن ثم فإن طلب الميزة هذا هو لمزيد من المطابقة المرنة لأسماء القواعد مقابل وسيطات سطر الأوامر. سيسمح التنفيذ الأقل فائدة بمطابقة البادئة فقط. بدلاً من ذلك ، قد تكون مطابقة regex مفيدة أيضًا.

التعليق الأكثر فائدة

أجد صعوبة كبيرة في استخدام أداة compdb - بالنسبة لي ، من المدهش أنها تحتاج إلى قائمة من القواعد (استغرق الأمر مني بعض الوقت حتى اكتشفت ذلك). ربما إذا لم يتم تمرير قواعد صريحة يمكن أن تعني فقط "جميع القواعد"؟ هل سيكون ذلك كافيًا للبنيات القائمة على cmake؟

(غير ذي صلة: أعتقد أنه يمكنك تمرير CMAKE_EXPORT_COMPILE_COMMANDS لجعله يكتب قاعدة بيانات تجميع مباشرة.)

ال 12 كومينتر

في الماضي كانت هناك أداة "قواعد" (7b67e48a1479c6fc7326c55756088bd57d64fc82) يمكنها طباعة قائمة بجميع القواعد. باستخدام هذه الأداة ، كان بإمكاننا فعل شيء من هذا القبيل:

ninja -t compdb `ninja -t rules | grep 'CXX_COMPILER_'`

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

هذا من شأنه أيضا أن يعمل ، شكرا.

أجد صعوبة كبيرة في استخدام أداة compdb - بالنسبة لي ، من المدهش أنها تحتاج إلى قائمة من القواعد (استغرق الأمر مني بعض الوقت حتى اكتشفت ذلك). ربما إذا لم يتم تمرير قواعد صريحة يمكن أن تعني فقط "جميع القواعد"؟ هل سيكون ذلك كافيًا للبنيات القائمة على cmake؟

(غير ذي صلة: أعتقد أنه يمكنك تمرير CMAKE_EXPORT_COMPILE_COMMANDS لجعله يكتب قاعدة بيانات تجميع مباشرة.)

هل من أحد هنا؟ 🙂

يبدو أن أداة القواعد تمت إزالتها من الإصدار?

سيكون هذا مفيدًا حقًا.

يعجبني اقتراحnico لطباعة جميع القواعد افتراضيًا. في المستقبل ، يمكن إضافة شيء أكثر تعقيدًا (مثل مطابقة أحرف البدل) إذا لزم الأمر.

ألاحظ أن الحلول المقترحة من sarcasm هنا قبيحة إلى حد ما ، وتحفز على حل أكثر جمالا في النينجا نفسها :)

يوجد الآن # 1377 لإلقاء جميع القواعد افتراضيًا.

عند الرغبة في إضافة ملاحظة صغيرة هنا ، يبدو أنه بالنسبة لبعض مشاريع CMake [0] ، لن يقوم ninja -t compdb (بدون وسائط) بتفريغ أي شيء (الناتج عبارة عن قائمة فارغة [] ).

cmake -G Ninja .
ninja -t compdb
[
]

ومع ذلك ، فإن استخدام CMAKE_EXPORT_COMPILE_COMMANDS كما اقترح نيكو سيؤدي إلى:

cmake -G Ninja . -DCMAKE_EXPORT_COMPILE_COMMANDS=1
ninja -t compdb
[
]

لا يزال إرجاع ninja -t compdb فارغًا ، ولكن تم إنشاء compile_commands.json بالفعل.

نيكو شكرا!

[0] لـ Binaryen على الأقل

ماذا يقول ninja --version ؟

1.8.2 ، راجع للشغل هذا النينجا قادم من depot_tools

هذا الإصدار مفقود # 1377.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات