Alat untuk Menghasilkan File Database Kompilasi JSON CLANG untuk sistem build berbasis GNU make .
Ini ditujukan terutama untuk non-cmake (cmake sudah menghasilkan database kompilasi) basis kode besar. Terinspirasi oleh proyek-proyek seperti YCM-Generator dan Bear, tetapi lebih cepat (terutama dengan proyek besar), karena dalam kebanyakan kasus tidak memerlukan build bersih (seperti yang dilakukan alat yang disebutkan) untuk menghasilkan file database kompilasi, untuk mencapai ini menggunakan opsi Make seperti -n / --dry-run dan -k / --keep-going mengekstraksi perintah kompilasi. Juga, ini lebih ramah kompilasi silang daripada pendekatan perahu palsu YCM-generator.
# pip install compiledb
sh-completion/compiledb.bash ke file .bashrc Anda, misalnya. compiledb menyediakan skrip pembungkus make yang, selain untuk menjalankan perintah Make Build, memperbarui file database kompilasi JSON yang sesuai dengan build itu, menghasilkan antarmuka baris perintah yang mirip dengan Bear.
Untuk menghasilkan file compile_commands.json menggunakan skrip "Make Wrapper" CompiledB, mengeksekusi target makefile all :
$ compiledb make compiledb ke depan semua opsi/argumen yang dilewati setelah make sub -perintah untuk membuat GNU, sehingga seseorang dapat, misalnya, menghasilkan compile_commands.json menggunakan core/main.mk sebagai makefile utama ( -f flag), memulai build dari Directory build ( -C Flag):
$ compiledb make -f core/main.mk -C build Secara default, compiledb make menghasilkan database kompilasi dan menjalankan perintah build aktual yang diminta (bertindak sebagai pembungkus make), langkah build dapat dilewati menggunakan opsi -n atau --no-build .
$ compiledb -n make Perintah dasar compiledb telah dirancang sehingga dapat digunakan untuk mengurai perintah kompilasi dari file teks sewenang -wenang (atau stdin), dengan asumsi memiliki log build (idealnya dihasilkan menggunakan perintah make -Bnwk ), dan menghasilkan database kompilasi JSON yang sesuai.
Misalnya, untuk menghasilkan database kompilasi dari file build-log.txt , gunakan perintah berikut.
$ compiledb --parse build-log.txtatau setara:
$ compiledb < build-log.txtAtau bahkan, untuk pipa membuat output dan mencetak database kompilasi ke output standar:
$ make -Bnwk | compiledb -o- Secara default compiledb menghasilkan database kompilasi JSON dalam format daftar "Argumen". Format string "Command" juga didukung melalui penggunaan bendera --command-style :
$ compiledb --command-style make Saya telah mengimplementasikan alat ini karena saya perlu mengindeks beberapa modul AOSP untuk menavigasi dan mempelajari tujuan (setelah tidak memiliki hasil yang memuaskan dengan alat saat ini yang tersedia pada saat seperti YCM-generator dan Bear). Jadi saya telah mengerjakan ulang YCM-generator, yang menghasilkan versi awal compiledb/parser.py dan digunakan dengan sukses untuk menghasilkan compile_commands.json untuk beberapa modul AOSP dalam ~ 1 menit berjalan dalam wadah Docker dan kemudian dapat menggunakannya dengan beberapa alat hebat, seperti:
Melihat:
Tambalan selalu diterima :)
GNU GPLV3