1. 程式人生 > >在mac上配置CMake,並編譯FlatBuffers

在mac上配置CMake,並編譯FlatBuffers

公司專案原本基礎架構是用json格式來傳遞資料,但是這個東西有個挺嚴重的問題,就是需要解析,然後專案本身與伺服器需要進行大量的通訊(頻率很高,大概30hz吧),這個解析就非常的拖效能了,而且當前的json庫,好像每次都得new物件,產生gc,然後就發現了FlatBuffers這麼個玩意。
它是google員工在業餘開發的一個玩意,具體去百度就好了。
它的特點呢,就是雖然資料也是2進位制傳輸的,但是它編碼過的資料,與原始資料在記憶體中的佔用區別不大,且達到另一端以後,並不需要複雜的格式轉換和解析,這就非常的適合高頻率通訊的架構來使用了,不過程式碼裡的用法有些噁心,不知道是編碼質量不高,還是因為就寫不成太優雅的格式的原因了。
然後這都不是重點,重點是要想使用這個東西,它的協議,需要用它自己提供的編譯庫來生成,然後這個東西在github上有windows的Release版,但是沒有mac,但是伺服器同事用的是mac呀,所以我們還需要自己編譯一個mac的出來。
這裡要吐槽一下,以前github上有現成生成好的Xcode工程,mmp一鍵就搞定了,結果現在變成了只有CMake的實現了,不是說CMake不好(它可以編譯各個平臺的),但是畢竟我不熟練呀,然後就說下要怎麼搞。

mac安裝十分簡單,就是個app,裝完長這樣。
這裡寫圖片描述

這時其實已經可以使用它了,如果你想在命令列也能使用CMake的命令的話,這裡可以這樣操作
這裡寫圖片描述
這裡寫圖片描述
選擇 How to install….,直接按著第二步來,就可以在app沒開的情況下使用CMake命令了。
當然命令列不是今天的主角,cmake出的這個app真的是非常的好用了,對於我這種不背命令的人來說簡直是福音。

這裡寫圖片描述
具體操作非常的智慧,我們選擇Browse Source…設定工程的位置,FlatBuffers裡有一個CMakeLists.txt檔案,app可以通過它來知道怎樣去構建相應的工程。
Browse Build….來設定編譯的輸出位置。
點選Configure,在彈出的窗口裡把目標專案設為Xcode,然後我們就發現右下角的Current Generator變成了Xcode。
然後見證奇蹟的時刻到了,直接點選Generate對應的Xcode工程就生成出來了,跟以前比簡直是太簡單了!!!以前cocos2d用cmake時,配來配去的煩死了。

這裡寫圖片描述
我們看到生成目錄下就出現了一個.xcodeproj的工程檔案,直接啟動它。
這裡寫圖片描述
然後我們選擇Build
這裡寫圖片描述
可以在Debug目錄下找到flatc檔案了,這個就是我們需要的協議生成庫了,
大功告成!

總的來說,cmake的這個app是給我驚喜最多的,人在學習,工具也在進步,學無止境呀。
向苦於解決伺服器json資料解析的同學推薦一下FlatBuffers這個協議,不用解析這個特性真是個天才的想法。
但是它在包體尺寸,記憶體佔用上就不是那麼具備優勢了。
對比json, FlatBuffers, protobuffer(google自己出的一種協議)。
json在除錯上有優勢(因為是明文傳遞)
protobuffer更加的中庸,記憶體更小,包更小,但是仍然需要解析
FlatBuffers上面幾點都是弱勢,但是它傳遞過來以後不需要解析,直接就可以序列化成類物件,所以特別的適合需要跟伺服器進行頻繁通訊的架構,這樣可以有效的提升伺服器,客戶端的執行效率,節省有限的計算資源。