เครื่องมือสำหรับการสร้างไฟล์ฐานข้อมูลการรวบรวม JSON ของ Clang สำหรับระบบสร้าง GNU make -based
มันมีจุดมุ่งหมายเป็นหลักที่ non-cmake (CMake สร้างฐานข้อมูลการรวบรวม) รหัสขนาดใหญ่ แรงบันดาลใจจากโครงการเช่น YCM-Generator และ Bear แต่เร็วกว่า (ส่วนใหญ่มีโครงการขนาดใหญ่) เนื่องจากในกรณีส่วนใหญ่มัน ไม่จำเป็นต้องมีการสร้างที่สะอาด --dry-run ตามเครื่องมือที่ -k -n ) เพื่อสร้างไฟล์ฐานข้อมูลการรวบรวม --keep-going ให้ได้สิ่งนี้ นอกจากนี้ยัง เป็นมิตรกับการคอมไพล์ข้าม มากกว่าวิธีการปลอมของ YCM-Generator
# pip install compiledb
sh-completion/compiledb.bash ลงในไฟล์ .bashrc ของคุณ compiledb จัดเตรียมสคริปต์ make Python ซึ่งนอกเหนือจากการเรียกใช้คำสั่ง Make Build แล้วให้อัปเดตไฟล์ฐานข้อมูลการรวบรวม JSON ที่สอดคล้องกับการสร้างนั้นส่งผลให้อินเตอร์เฟสบรรทัดคำสั่งคล้ายกับ Bear
ในการสร้างไฟล์ compile_commands.json โดยใช้สคริปต์ "Make Wrapper" ของ CompiledB ดำเนินการกำหนดเป้าหมาย MakeFile all :
$ compiledb make compiledb ส่งต่อตัวเลือก/อาร์กิวเมนต์ทั้งหมดที่ส่งผ่านหลังจาก make คำสั่งย่อยไปยัง GNU Make ดังนั้นเราสามารถสร้าง compile_commands.json โดยใช้ core/main.mk เป็น makefile หลัก ( -f Flag) เริ่มต้นสร้างจาก build Directory ( -C Flag):
$ compiledb make -f core/main.mk -C build โดยค่าเริ่มต้น compiledb make สร้างฐานข้อมูลการรวบรวมและเรียกใช้คำสั่ง build จริงที่ร้องขอ (ทำหน้าที่เป็น wrapper) ขั้นตอนการสร้างสามารถข้ามได้โดยใช้ตัวเลือก -n หรือ --no-build เลือก
$ compiledb -n make compiledb คำสั่ง BASE ได้รับการออกแบบเพื่อให้สามารถใช้ในการแยกวิเคราะห์คำสั่งรวบรวมจากไฟล์ข้อความโดยพลการ (หรือ stdin) สมมติว่ามีบันทึกการสร้าง (สร้างขึ้นอย่างดีเยี่ยมโดยใช้คำสั่ง make -Bnwk ) และสร้างฐานข้อมูลการรวบรวม JSON ที่สอดคล้องกัน
ตัวอย่างเช่นในการสร้างฐานข้อมูลการรวบรวมจากไฟล์ build-log.txt ให้ใช้คำสั่งต่อไปนี้
$ compiledb --parse build-log.txtหรือเทียบเท่า:
$ compiledb < build-log.txtหรือแม้กระทั่งในการสร้างเอาต์พุตและพิมพ์ฐานข้อมูลการรวบรวมไปยังเอาต์พุตมาตรฐาน:
$ make -Bnwk | compiledb -o- โดยค่าเริ่มต้น compiledb สร้างฐานข้อมูลการรวบรวม JSON ในรูปแบบรายการ "อาร์กิวเมนต์" รูปแบบสตริง "คำสั่ง" ได้รับการสนับสนุนผ่านการใช้ธง --command-style :
$ compiledb --command-style make ฉันได้ใช้เครื่องมือนี้เพราะฉันจำเป็นต้องจัดทำดัชนีโมดูลของ AOSP บางอย่างสำหรับการนำทางและการศึกษาวัตถุประสงค์ (หลังจากไม่มีผลลัพธ์ที่น่าพอใจด้วยเครื่องมือปัจจุบันที่มีอยู่ในเวลาเช่น YCM-Generator และ Bear) ดังนั้นฉันจึงทำการปรับปรุง YCM-Generator ซึ่งส่งผลให้รุ่นแรกของ CompiledB/Parser.py และใช้งานได้สำเร็จเพื่อสร้าง compile_commands.json สำหรับโมดูล AOSP บางอย่างใน ~ 1 นาทีที่ทำงานในคอนเทนเนอร์ Docker และจากนั้นสามารถใช้กับเครื่องมือที่ยอดเยี่ยมเช่น::
สังเกต:
แพตช์ยินดีต้อนรับเสมอ :)
GNU GPLV3