CEF即Chromium Embedded Framework,Chrome瀏覽器嵌入式框架。我們可以從自制瀏覽器入手,深入學(xué)習(xí)它。它提供了接口供程序員們把Chrome放到自己的程序中。許多大型公司,如網(wǎng)易、騰訊都開(kāi)始使用CEF進(jìn)行前端開(kāi)發(fā),小如網(wǎng)易的Minecraft啟動(dòng)器,大如微信電腦版,都可以使用前端技術(shù)進(jìn)行開(kāi)發(fā)。把C++或者其他編程語(yǔ)言于HTML相結(jié)合的CEF,能夠?qū)崿F(xiàn)更好的效果。但一旦你決定開(kāi)始學(xué)CEF,就不可避免地會(huì)掉到坑里:中文文檔參差不齊,官方文檔著重于Linux,很多時(shí)候甚至不能自己成功編譯CEF!經(jīng)過(guò)2-3天的來(lái)回查閱,終于成功編譯了cefsimple示例。希望這篇文檔能幫你躲過(guò)一些坑!在文章的最后,你會(huì)得到一個(gè)屬于你自己的瀏覽器!
使用cef有兩種辦法:自己編譯源碼,或者使用編譯好內(nèi)核的半成品,除非你是老練的Linux高手,否則還是建議使用后者,直接下載半成品是最快速,簡(jiǎn)潔的辦法了。這個(gè)半成品叫做libcef。下載libcef的官方網(wǎng)址是http://cefbuilds.com/,這個(gè)網(wǎng)站已經(jīng)被墻。你也可以嘗試在:http://opensource.spotify.com/cefbuilds/index.html這個(gè)映像站下載,不過(guò)可能要等上1-2天了。建議掛在遠(yuǎn)程服務(wù)器上下載,或者開(kāi)代理下載。打開(kāi)網(wǎng)站后,在頁(yè)面最底部找到Windows 32-bit Build或Windows 64-bit Build,然后下載。
注意:如果你考慮兼容32位計(jì)算機(jī),那可以選擇Windows 32-bit Build。但Windows 64-bit Build可以提供超過(guò)4GB的內(nèi)存支持,多頁(yè)面的話能提升性能(畢竟Chrome很吃內(nèi)存的)。用Visual Studio在64位計(jì)算機(jī)編譯32位程序會(huì)出現(xiàn)一些問(wèn)題,比如CEF會(huì)導(dǎo)致編譯失敗。如果你打算兼容32位,那就需要找一臺(tái)32位計(jì)算機(jī)來(lái)編譯了。這里使用64位版本。
下載并解壓之后,你應(yīng)該會(huì)得到這些文件:
這時(shí)你肯定會(huì)疑惑:我的sln和vcproj呢?答案是——你需要使用Cmake。Cmake是一款跨平臺(tái)的編譯輔助工具,如果你在Windows,他可以生成sln和vcproj這樣兼容Visual Studio的項(xiàng)目,如果你在Linux,那他也可以生成make這樣兼容gcc編譯器的項(xiàng)目。這樣項(xiàng)目管理者可以一勞永逸,不用分別為Windows、Linux、Mac分別編寫(xiě)項(xiàng)目文件。
Cmake官網(wǎng)也被墻了,你可以掛代理或者從下載站下載它。你需要下載最新版本,可以兼容Visual Studio 2019。打開(kāi)Cmake:
在Where is the source code框中選擇下載下來(lái)的cef文件夾,接著再在cef文件夾中創(chuàng)建一個(gè)文件夾“build”,在Where to build binaries框中選擇這個(gè)build文件夾,依次點(diǎn)擊Configure——Generate生成文件,不出意料,你的程序就——出錯(cuò)了!
這是由于你選錯(cuò)了Visual Studio版本或者系統(tǒng)位數(shù)導(dǎo)致的,試著點(diǎn)擊File——Delete Chche清除配置,重來(lái)一遍。
如果你生成成功,那你會(huì)看到這兩條日志:
恭喜你,已經(jīng)完成大半了!
打開(kāi)剛才創(chuàng)建的build文件夾,你會(huì)找到cef.sln這個(gè)solution(解決方案)文件:
打開(kāi)它,可以看到這個(gè)解決方案下有幾個(gè)項(xiàng)目:
點(diǎn)擊“本地Windows調(diào)試器”按鈕,不出意料,你的程序就——出錯(cuò)了!
什么也沒(méi)有打開(kāi)。不知道你留意到ALL_BUILD項(xiàng)目的名字是粗體字了嗎?這表示Visual Studio只會(huì)編譯和執(zhí)行這一個(gè)項(xiàng)目。而我們希望搭建的是cefsimple項(xiàng)目,怎么辦呢?右鍵cefsimple項(xiàng)目,找到“設(shè)為啟動(dòng)項(xiàng)目”。之后你會(huì)發(fā)現(xiàn)cefsimple變成了粗體,這就表明設(shè)置成功了。
點(diǎn)擊“本地Windows調(diào)試器”按鈕,不出意料,你的程序就——出錯(cuò)了!
又來(lái)?別擔(dān)心,這應(yīng)該是最后一次了,但這也是最頭疼的一次。程序成功生成并運(yùn)行了,但卻提示“無(wú)法定位程序輸入點(diǎn)PowerDeterminePlatformRoleEx于POWRPROF.dll上”!這讓人十分抓狂。Debug?幾十萬(wàn)行的Chrome怎么Debug,更何況還是半成品。作者只好先放在了一邊。過(guò)了幾天,在B站上偶然看到一篇Visual Studio的科普,提到了Debug和Release版本的區(qū)別。Debug是調(diào)試用版本,沒(méi)有進(jìn)行速度優(yōu)化,而Release速度更快,但沒(méi)辦法使用斷點(diǎn)等調(diào)試功能。試著把Debug換成Release:
在等待了幾分鐘后,編譯成功了!這次成功生成了一個(gè)名為cefsimple的窗口,但卻不顯示任何內(nèi)容。我們打開(kāi)cefsimple->cefsimple->simpleapp.cc,找到第89行,可以看到他默認(rèn)訪問(wèn)http://www.google.com/,難怪訪問(wèn)不了!
更改成baidu.com,再進(jìn)行編譯:
可以看到他成功訪問(wèn)了baidu.com!現(xiàn)在,我們也是可以開(kāi)發(fā)瀏覽器的人了!
Enjoy it!
喜歡的話就點(diǎn)個(gè)贊吧!
聯(lián)系客服