用於生成Clang的JSON編譯數據庫文件的工具,用於make GNU的構建系統。
它主要針對非cmake(Cmake已經生成編譯數據庫)大型代碼庫。受YCM-Generator和Bear等項目的啟發,但更快(主要是大型項目),因為在大多數情況下,它不需要乾淨的構建(如上所述的工具)來生成編譯數據庫文件,以實現此目的,它使用了諸如-n / --dry-run和-k / - kepand- --keep-going提取編譯命令。此外,它比YCM-Generator的假牛蛋白方法更加跨編譯友好。
# pip install compiledb
sh-completion/compiledb.bash文件的內容添加到您的.bashrc文件中。compiledb提供了一個make Python包裝腳本,除執行Make Build命令外,還更新了與該構建相對應的JSON編譯數據庫文件,從而產生了類似於BEAR的命令行界面。
要使用CommiledB的“ Make Wrapper”腳本生成compile_commands.json文件,請執行MakeFile Target all :
$ compiledb make compiledb將-C命令轉交給GNU make MAKE將所有選項/參數轉發,因此,可以使用core/main.mk作為main makefile( -f flag) build compile_commands.json 。
$ compiledb make -f core/main.mk -C build默認情況下, compiledb make生成編譯數據庫並運行所請求的實際構建命令(充當製造包裝器),可以使用-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,它導致了compilesb/parser.py的初始版本,並成功用於生成compile_commands.json ,以在〜1分鐘內在Docker容器中運行的AOSP模塊,然後可以將其與一些出色的工具一起使用,例如:例如:
注意:
總是歡迎補丁:)
GNU GPLV3