新用到的一個c++項目編譯構建工具---blade

在linux平臺,之前makefile,cmake.... 各類難用和繁瑣python

 

blade 聽說是騰訊搞出來的,好吧還不錯,企鵝繼續加油! 採用python開發的。linux

首先,Blade解決了依賴問題。 當你在構建某些目標時,頭文件有變化,會自動從新構建。 最方便的是,Blade也能追蹤庫文件的依賴關係。好比 庫 foo 依賴庫 common,那麼在庫 foo 的 BUILD 文件中列入依賴:vim

cc_library(bash

     name  = 'foo' ,
     srcs  = ...
     deps  = ':common'
)

那麼對於使用foo的程序,若是沒有直接用到common,那麼久只須要列出foo,並不須要列出common。併發

 cc_binary(app

     name  = 'my_app' ,
     srcs  = ...
     deps  = ':foo'
)

這樣當你的庫實現發生變化,增長或者減小庫時,並不須要通知庫的用戶一塊兒改動,Blade自動維護這層間接的依賴關係。當構建my_app時,也會自動檢查foo和common是否也須要更新。svn

說道易用性,除了依賴關係的自動維護,Blade還能夠作到,只要一行命令,就能把整個目錄樹的編譯鏈接單元測試就能夠所有搞定。例如:單元測試

遞歸構建和測試common目錄下全部的目標測試

$ blade test common...

以32位模式構建和測試spa

$ blade test -m32 common...

以調試模式構建和測試

$ blade test -pdebug common...

顯然,你能夠組合這些標誌

$ blade test -m32 -pdebug common...

特色

  • 自動分析頭文件依賴關係,構建受影響的代碼。
  • 增量編譯和連接,只構建因變動受影響而須要構建的。
  • 自動計算庫的間接依賴,庫的做者只須要寫出直接依賴,構建時自動檢查所依賴的庫是否須要從新構建。
  • 在任意代碼樹的任意子目錄下都能構建。
  • 支持一次遞歸構建多個目錄下的全部目標,也支持只構建任意的特定的目標。
  • 不管構建什麼目標,這些目標所依賴的目標也會被自動連坐更新。
  • 內置 debug/release 兩種構建類型。
  • 彩色高亮構建過程當中的錯誤信息。
  • 支持 ccache
  • 支持 distcc
    • 支持基於構建多平臺目標
    • 支持構建時選擇編譯器(不一樣版本的gcc,clang等)
    • 支持編譯 protobuf,lex, yacc, swig
    • 支持自定義規則
    • 支持測試,在命令行跑多個測試
    • 支持並行測試(多個測試進程併發運行)
    • 支持增量測試(無需從新運行的測試程序自動跳過)
    • 集成 gperftools,自動檢測測試程序的內存泄露
    • 構建腳本 vim 語法高亮
    • svn 式的子命令命令行接口。
    • 支持 bash 命令行補全
    • 用 Python 編寫,無需編譯,直接安裝使用。

    完全避免如下問題:

    • 頭文件更新,受影響的模塊沒有從新構建。
    • 被依賴的庫須要更新,而構建時沒有被更新,好比某子目錄依賴遙遠的某外部目錄的代碼,我在這個目錄構建,外部目錄的代碼會被自動檢查是否也須要從新構建。
相關文章
相關標籤/搜索