雖然之前有過CMake編譯CTK框架的經驗,但對本人而言,編譯GRPC依舊是非常麻煩的事情,遇到了非常多的問題,包括GIT工程依賴的三方庫、版本問題、依賴三方開發工具、VS版本等等。最大的問題還是來自於坑壁網友的垃圾教程,要么都是直接cpye,要么就不把坑說明白,經過10086次嘗試,終於完成了第一次成功編譯。如下:
一、環境准備
要知道為啥安裝這些環境,官方已經給了答案
0、VS
這不用說了吧,本文用的是VS2019
1、Git
用於clone grpc相關源碼到本地,如果不安裝直接從Github上下載也可以不安裝
2、CMake
需要安裝,這種大型通用框架基本都是Cmake編譯,本人安裝的是
3、Perl
編譯boringssl時需要,本人安裝的是
4、Go
編譯boringssl時需要,本人安裝的是
5、yasm
編譯boringssl時需要【這個很難找到,而且有的地址又說是安裝nasm,我真的醉了】,反正我安裝的是這個
,可以試試不安裝,看會不會報錯
根據我的參考的文章,只安裝了VS2019、Perl、Go、CMake,我覺得應該是可以的,本人第一次嘗試編譯grpc就tm被這幾個找不到安裝包的軟件搞得放棄了。
本人會將相關包放在文章末尾鏈接,需要可自行下載。
二、GRPC代碼獲取
github倉庫:https://github.com/grpc/grpc
本次編譯版本:V1.23.0
解決gitbub訪問慢:https://www.cnblogs.com/judes/p/14477855.html
網絡慢真是個大問題,又是讓我某次放棄的原因
1、網址直接下載
打開地址,選擇V1.23.0版本,之前不知如何選版本,每次都下載最新master的,導致錯誤。
點擊右邊code,下載ZIP
2、git下載
下載指定版本
git clone -b v1.23.0 https://github.com/grpc/grpc.git
這里又是一個坑:網絡很多xx教程都是直接讓你直接clone master的代碼下載,很可能出現問題,強烈建議去git網站手動下載指定版本
三、配置GRPC依賴的三方庫
GRPC依賴了很多三方庫,需要全部將其配置好,這些庫在下載下來的GRPC的third_party里,初次下載下來里面全是空文件夾,所以需要配置。
每一個文件夾就是一個三方庫,其對應在git上有自己的倉庫。
這里又有兩個坑:
①、有些教程說只需要下載那幾個常用的,我反正試了沒成功,為了保證萬無一失,建議還是全部都下載,畢竟本文是全部下載后編譯通過的
②、有些教程直接一句話帶過,通過git指令來安裝全部依賴庫
git submodule update --init
但是我敢說90%以上的普通電腦都不能輕松訪問github,往往都會出錯,寫這些教程的xx真的試過嗎?還是直接自己抄的?xx,大xx!
③、這些依賴庫都是有版本的,我試過全部下載最新的master,編譯出錯,故需要下載與GRPC版本對應的三方庫。
綜上,建議:手動下載全部的三方依賴庫到對應文件夾,但是如何找到對應版本的三方庫呢?
其實Git倉庫已經告訴我們了:
1、進入倉庫,打開third_party文件夾
每個三方庫后面都加了一個@xxxxxxx,這個xxxxxx就是對應的其版本。
以第一個abseil-cpp為例,直接點擊進入,就是對應版本的abseil-cpp倉庫,同樣以ZIP下載,放在本地third_party的對應文件夾里面。
2、解壓,然后將解壓后的內容拷貝到abseil-cpp根目錄,即:abseil-cpp文件里不能有多級目錄
如下:
同樣的操作,把這些三方依賴庫全部下載解壓
四、生成解決方案
這里又有兩個版本,用CMake_GUI配置、用CMake命令行,這里用的是命令行
1、在GRPC根目錄下新建文件夾.build
2、打開cmd,進入.build文件夾
3.用CMake命令行生成VS解決方案
cmake .. -G "Visual Studio 16 2019" -A Win32
這里需要注意:其他版本的VS命令行不一樣;
如果是64位則:
cmake .. -G "Visual Studio 16 2019" -A x64
如果是其他版本如VS2015
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release //VS2015 64位 Release cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Debug //VS2015 64位Debug cmake .. -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE=Debug //VS2015 32位Debug
....
經過漫長等待,在.build文件夾里生成了解決方案【注意這里可能會報很多文件not found,不用管】
五、編譯安裝
1、打開VS2019
2、打開grpc.sln解決方案
3、右鍵ALL_BUILD,選擇生成
這里又有一個坑:這個解決方案里有很多很多的工程,有些xx教程依賴就說“打開解決方案,編譯即可生成依賴庫”,我xxxxx,這樣說誰xx知道編譯哪個工程,真是醉了。
這里我直接說明:是對ALL_BUILD進行編譯,也就是右鍵點擊生成
4、等待許久,提示成功xxx個,失敗0個【也就這也順利,我試了n次其他的都是各種失敗】
這里打印信息被沖掉了,就不貼圖了
5、安裝
選擇INSTALL工程,右鍵生成
經過安裝,成功
在C:\Program Files (x86)\grpc下就能得到需要的GRPC庫,嗚嗚嗚,終於成功了
參考了10086篇教程,就這哥們的有用,致敬!!
https://blog.csdn.net/weixin_43655901/article/details/118995526
Grpc官網:https://www.grpc.io/
本文相關的安裝包和生成的結果,可直接下載:
需要提前安裝的軟件:https://download.csdn.net/download/m0_53292003/35603214
可直接編譯的GRPC包:https://download.csdn.net/download/m0_53292003/35604690