1.獲取源碼:位於github上
電腦裝有git的直接克隆,未裝git下載壓縮包也可以
git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init 這條命令在我電腦上不起作用,我采用的辦法是,對着grpc文件夾點擊鼠標右鍵,選擇
【tortoiseGit】->選擇【更新子模塊】,如果沒有安裝Git可以點開github上grpc\third_party目錄,可以看到grpc外部鏈接的子模塊的地址,一個個下載即可
2.下載依賴包:opensll 和zlib
個人習慣用vs,那我們開始編譯,編譯之前需要下載nuget,要下載windows的.exe后綴,網上大多說的都是結合vs的,是錯誤的,地址:https://dist.nuget.org/index.html,不需要安裝,將該文件至於環境變量目錄下,即可執行nuget命令,用於依賴包的網絡下載。主要是依賴於openssl和zlib庫。
1:cd grpc cd vsprojects
2:nuget restore grpc.sln,在vs命令行窗口執行這句,dos窗口我沒試過,不知道是否也可以
3.下載gmock
cd grpc\third_party\protobuf
下載gmock: git clone -b release-1.7.0 https://github.com/google/googlemock.git gmock
cd gmock :git clone -b release-1.7.0 https://github.com/google/googletest.git gtest
上述兩個包下載如果沒有安裝git,直接去下載壓縮包
4.下載界面版的cmake
由於probuf沒有.sln文件,我下載了界面版cmake,個人認為界面版的cmake不要安裝,還比命令行好用,cmake中選擇vs std 14 2015即可,后面講下使用cmake時指定的兩個目錄:資源目錄為有CMakeList的目錄,即:third_party\protobuf\cmake,生成sln的目錄:grpc\third_party\protobuf\cmake\build\solution,為什么是這個目錄呢?
因為后面grpc會用你編譯的庫,你指定這個目錄就不用修改【附加庫目錄】了,如果你生成庫為debug版本,后面多個d,則去掉
5.開始編譯protobuf,
打開sln,用vs2015編譯即可,這個應該是非常順利的,不會有什么錯誤,生成的debug庫最好去掉‘d’,比如:libprotobufd.lib改為libprotobuf.lib
6.開始編譯grpc和grpc插件
cd grpc\vsprojects 打開工程既可,編譯即可
我只遇到了個錯誤:error1189,在【預處理器】定義中添加_WIN32_WINNT=0x600,如果報什么鏈接錯誤就簡單了,大家可以自行查出缺少了哪些庫,如果你搞不清庫應該放在哪個路徑,你可以直接指定庫的目錄,最后有個關於grpc++dll的子項目沒有通過,不用管,因為我們要用的是grpc和grpc++
7.集成
建議大家先采用官方的實例集成,目錄:grpc\examples\protos,生成c++文件
官方說明:http://doc.oschina.net/grpc?t=57966
生成命令:在dos里執行即可
$protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/route_guide.proto
$protoc -I ../../protos --cpp_out=. ../../protos/route_guide.proto
為什么要采用官方的例子,請看下面說明:
這里我遇到個大坑,java同事把的proto文件發給我,我直接用,怎么集成都有編譯錯誤,注意這里是編譯錯誤,我開始懷疑上面我做錯了哪一步,后來把他的proto里的代碼拷貝到官方的route_guide.proto,調成和官方一樣的格式,比如空格等,后來集成成功,因為這個問題,我反復編譯了好幾次
grpc等等,浪費了大量時間
如果集成遇到了鏈接錯誤:則將對應的庫強制包含里面,
include:
libs:
zlib和ssl的庫我是通過nuget下的教程,https://www.nuget.org/packages/openssl/
方法一:在VS中用nuget控制台執行命令即可,這個網上有大量教程,簡單易用,方法二:你可以自己cmake或者下載
集成demo如下:我的demo有幾層命令空間,如果不好理解,請大家參照上面官方的示例