أداة لإنشاء ملف قاعدة بيانات مجموعة JSON الخاصة بـ Clang لأنظمة الإنشاء make إلى GNU.
إنه يهدف بشكل أساسي إلى عدم وجود قاعدة بيانات للاشمئزاز غير (CMAKE). مستوحاة من مشاريع مثل ycm-generator و Bear ، ولكن بشكل أسرع (بشكل أساسي مع المشاريع الكبيرة) ، لأنه في معظم الحالات لا يحتاج إلى بناء نظيف (كما تفعل الأدوات المذكورة) لإنشاء ملف قاعدة بيانات التجميع ، لتحقيق ذلك ، يستخدم خيارات صنع مثل -n / --dry-run و -k / --keep-going لاستخراج الأوامر المريحة. أيضًا ، إنه أكثر ودية من مقاربة Toolchanin المزيفة من YCM.
# pip install compiledb
sh-completion/compiledb.bash إلى ملف .bashrc الخاص بك ، على سبيل المثال. يوفر compiledb برنامجًا لـ make Python Wrapper والذي ، إلى جانب تنفيذ أمر Make Build ، يقوم بتحديث ملف قاعدة بيانات مجموعة JSON المقابل لتلك البناء ، مما يؤدي إلى واجهة سطر الأوامر مماثلة لخطية.
لإنشاء ملف compile_commands.json باستخدام البرنامج النصي "Make Wrapper" الخاص بـ CompiledB ، وإعداد هدف Makefile all :
$ compiledb make يقوم compiledb بإعادة توجيه جميع الخيارات/الوسيطات التي تم تمريرها بعد make المجموعة الفرعية لجعل GNU ، لذلك يمكن للمرء ، على سبيل المثال ، إنشاء compile_commands.json باستخدام core/main.mk كـ Mainfile الرئيسية (علامة -f ) ، وبدء البناء من دليل build (علم -C ):
$ compiledb make -f core/main.mk -C build بشكل افتراضي ، يقوم compiledb make بإنشاء قاعدة بيانات التجميع ويقوم بتشغيل أمر الإنشاء الفعلي المطلوب (يتصرف كجهاز إنشاء) ، ويمكن تخطي خطوة الإنشاء باستخدام خيارات -n أو --no-build .
$ compiledb -n make تم تصميم الأمر الأساسي compiledb بحيث يمكن استخدامه لتحليل الأوامر الترويجية من الملفات النصية التعسفية (أو stdin) ، على افتراض أنه يحتوي على سجل بناء (تم إنشاؤه بشكل مثالي باستخدام أمر make -Bnwk ) ، ويقوم بإنشاء قاعدة بيانات مجموعة JSON المقابلة.
على سبيل المثال ، لإنشاء قاعدة بيانات التجميع من ملف build-log.txt ، استخدم الأمر التالي.
$ compiledb --parse build-log.txtأو ما يعادلها:
$ compiledb < build-log.txtأو حتى ، لإخراج Make Pipe وطبع قاعدة بيانات التجميع إلى الإخراج القياسي:
$ make -Bnwk | compiledb -o- بشكل افتراضي ، يقوم compiledb بإنشاء قاعدة بيانات تجميع JSON بتنسيق قائمة "الوسائط". يتم دعم تنسيق سلسلة "الأمر" أيضًا من خلال استخدام العلم --command-style :
$ compiledb --command-style make لقد قمت بتطبيق هذه الأداة لأنني كنت بحاجة إلى فهرسة بعض وحدات AOSP للتنقل والدراسة أغراض (بعد عدم وجود نتائج مرضية مع الأدوات الحالية المتاحة في الوقت مثل المولد YCM و Bear). لذلك قمت بإعادة صياغة ycm-cenerator ، والتي أدت إلى الإصدار الأولي من compiledb/parser.py واستخدمت بنجاح لإنشاء compile_commands.json لبعض وحدات AOSP في حوالي 1 دقيقة تعمل في حاوية docker ومن ثم يمكن استخدامها مع بعض الأدوات الرائعة ، مثل:
يلاحظ:
بقع دائما موضع ترحيب :)
GNU GPLV3