blade 学习
一、目錄構(gòu)造樣式
. └── workspace├── BLADE_ROOT├── build64_release├── client│?? ├── BUILD│?? └── client.cpp├── idl│?? └── student│?? ├── BUILD│?? └── student.thrift├── proj│?? ├── BUILD│?? └── src│?? ├── main.cpp_bak│?? └── student_funcs_server.skeleton.cpp├── README└── SConstruct二、blade 各個文件的意義
一般會先建立一個workspace,在里面touch BLADE_ROOT。包含BLADE_ROOT的文件夾是blade的根目錄,比如如果要引用其他項目的頭文件,路徑是需要相對于BLADE_ROOT這一級目錄來寫的
?
三、BUILD 文件
cc_binary(name='client',srcs='client.cpp',deps=['//idl/student:student_thrift',] )cc_library( name='abs_lib',srcs='abs.cpp',
allow_undefined=True, )
?
?name值得是這個binary的名字
srcs是要編譯這個binary需要的源文件
deps是編譯這個binary所需要的依賴。比如說workspace/proj/src/main.cpp里面調(diào)用了 workspace/abs/abs.cpp里面的abs()方法來取絕對值,那么就需要添加deps = ['//abs:abs_lib']這個依賴,注意,//abs:abs_lib里面的abs是相對于workspace的一個路徑,后面的abs_lib是abs這個項目里面BUILD文件的name。
cc_library,這是說明,要講目標(biāo)編譯成庫文件,默認(rèn)編譯成"libabs_lib.a"這個靜態(tài)庫文件,可以通過添加編譯選項,這樣,blade build --generate-dynamic,這個參數(shù)來生成動態(tài)庫,生成動態(tài)庫的時候可能會報未定義的符號,可以加上?allow_undefined=True,這個選項
?
如果A library被B依賴,并且B的BUILD文件里面有dynamic_link=1這個選項,那么A庫也會生成動態(tài)so庫
?
四、編譯
blade build
選項
--update-deps 自動從git上拉取依賴
?
五、用blade來自動編譯thrift項目
?需要用到 thrift_library
thrift_library(name="student_thrift",srcs="student.thrift",export_incs=[""],deps = [ "cpp3rdlib/thrift:0.9.1@//cpp3rdlib/thrift:thrift",#"//idl/base:base_thrift",], )thrift_library就會生成相應(yīng)的thrift文件,相當(dāng)于幫你手動執(zhí)行了 thrift -gen cpp workspace/idl/student.thrift這個命令
如果我的 workspace/proj/src/main.cpp 是一個thrift server,那應(yīng)該怎樣寫B(tài)UILD呢? 很簡單,直接在deps里面寫入? '//idl/student:student_thrift'? ?即可。這樣,我的main.cpp里面就可以直接包含thrift的相關(guān)頭文件了,然后最終將main.cpp編譯成一個 thrift 的 server
posted on 2018-11-12 20:38 potatoknight 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/longjmp/p/9948887.html
總結(jié)
- 上一篇: 浅析软件工程中的UML建模技术
- 下一篇: MongoDB学习笔记(2)