當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]從12年那會兒開始獲取源碼和構(gòu)建chromium項目都是按照那時候的官方要求用win7+vs2010,相對來說也比較簡單,按照步驟來也很快能編譯出來。1.官網(wǎng)的編譯配置介紹:http://www.ch

從12年那會兒開始獲取源碼和構(gòu)建chromium項目都是按照那時候的官方要求用win7+vs2010,相對來說也比較簡單,按照步驟來也很快能編譯出來。

1.官網(wǎng)的編譯配置介紹:http://www.chromium.org/developers/how-tos/build-instructions-windows

2.編譯需要的工具:vs2010/sp1,win8sdk,DXSDK,depot_tools

我用的工具都是在這里了:2010CompilerToolsForChrome

depot_tools也可以從官方獲取:depot_tools?(命令行下執(zhí)行 gclient 它會自動下載安裝構(gòu)建項目解決方案所需要的工具? python, git 和 svn ),下載下來之后找個地方解壓出來,比如我是解壓到E:盤下。


3.修改配置 按照官網(wǎng)說的,配置環(huán)境變量:GYP_MSVS_VERSION和depot_tools的path路徑。
如果win8SDK的安裝路徑不是默認(rèn)的 C:Program Files (x86)Windows Kits8.0 的話,就需要增加一個環(huán)境變量。 GYP_DEFINES 值為你真正安裝win8SDK的位置,比如C:UsersKuerjinjinDownloadsWindows Kits8.0
? 配置DirectX sdk的頭文件及l(fā)ib庫路徑: windows鍵 + r鍵,輸入%localappdata%MicrosoftMSBuildv4.0 并運(yùn)行,在彈出的文件夾列表中找到Microsoft.Cpp.Win32.user.props和Microsoft.Cpp.x64.user.props并修改這兩個文件。
[html] view plaincopyprint????????

$(DXSDK_DIR)Include;$(IncludePath)$(DXSDK_DIR)Libx86;$(LibraryPath)$(DXSDK_DIR)Include;$(IncludePath)$(DXSDK_DIR)Libx64;$(LibraryPath)


修改WRL的頭文件,默認(rèn)C:Program Files (x86)Windows Kits8.0Includewinrtasyncinfo.h 找到 enum class AsyncStatus { ... } 改成 enum /*class*/ AsyncStatus { ... }
4.代碼獲?。?br />找一個空間超過60G的磁盤比如E:,創(chuàng)建文件夾chromium30,命令行下切換到該目錄, [plain] view plaincopyprint?>e:??>cd?chromium30??>gclient?config?http://src.chromium.org/svn/releases/30.0.1559.0/???

>e:
>cd?chromium30
>gclient?config?http://src.chromium.org/svn/releases/30.0.1559.0/


拉取目前最新的源碼配置,當(dāng)然你也可以在http://src.chromium.org/svn/releases/中選擇自己想要的源碼版本。 一般會在當(dāng)前目錄下生成一個.gclient的配置文件。為了減少不必要的代碼獲得的時間浪費(fèi),打開.gclient文件在“custom_deps”節(jié)里忽略掉部分測試代碼,如: [plain] view plaincopyprint?solutions?=?[?{?"name"????????:?"30.0.1559.0",??????????????????????????"url"?????????:?"http://src.chromium.org/svn/releases/30.0.1559.0",??????????????????????????"deps_file"???:?"DEPS",??????????????????????????"managed"?????:?True,??????????????????????????"custom_deps"?:?{?????????????????????????????????????"src/webkit/data/layout_tests/LayoutTests":?None,?????????????????????????????????????"src/third_party/WebKit/LayoutTests":?None,?????????????????????????????????????"src/chrome/tools/test/reference_build/chrome":?None,?????????????????????????????????????"src/chrome_frame/tools/test/reference_build/chrome":?None,?????????????????????????????????????"src/chrome/tools/test/reference_build/chrome_linux":?None,?????????????????????????????????????"src/chrome/tools/test/reference_build/chrome_mac":?None,??????????????????????????},?????????????????????????"safesync_url":?"",????????????????????????},??]??

solutions?=?[?{?"name"????????:?"30.0.1559.0",
????????????????????????"url"?????????:?"http://src.chromium.org/svn/releases/30.0.1559.0",
????????????????????????"deps_file"???:?"DEPS",
????????????????????????"managed"?????:?True,
????????????????????????"custom_deps"?:?{
???????????????????????????????????"src/webkit/data/layout_tests/LayoutTests":?None,
???????????????????????????????????"src/third_party/WebKit/LayoutTests":?None,
???????????????????????????????????"src/chrome/tools/test/reference_build/chrome":?None,
???????????????????????????????????"src/chrome_frame/tools/test/reference_build/chrome":?None,
???????????????????????????????????"src/chrome/tools/test/reference_build/chrome_linux":?None,
???????????????????????????????????"src/chrome/tools/test/reference_build/chrome_mac":?None,
????????????????????????},
???????????????????????"safesync_url":?"",
??????????????????????},
]


不要關(guān)閉命令提示,直接在當(dāng)前目錄下輸入gclient sync --force 進(jìn)行源碼的同步。接下來就等吧,這個同步的時間會很長,要同步十幾G的文件下來。正常情況下會在同步完成之后生成解決方案。如果沒有,在當(dāng)前目錄下接著輸入gclient runhooks --force。如果確保已經(jīng)100%同步完成了,生成解決方案的話可以直接輸入? python build/gyp_chromium 如果是第一次接觸這個項目,那么找一下 src/chrome/chrome.sln 打開,將chrome項目設(shè)置為啟動項目,然后調(diào)試就OK。 ------------------------------------------------------------------------------------------------------------------------------- 自美國時間2014年3月1日開始,谷歌對chromium源碼的構(gòu)建方式做了調(diào)整。
關(guān)于系統(tǒng)版本只支持Windows 7 x64或更高版本, x86的操作系統(tǒng)已經(jīng)不再支持。
從chromium r254340(chromium33)之后的版本,默認(rèn)的調(diào)試工具唯一指定為Visual Studio 2013,
所以如果使用最近的源碼進(jìn)行構(gòu)建,需要安裝VS2013并修改 GYP_MSVS_VERSION=2013
而構(gòu)建工具除了之前一直在使用的 depot_tools ,還增加了 ninja 工具的配合(ninja也是整合在了depot_tools中)。
所以一直在使用舊版本depot_tools的開發(fā)者們,需要先更新 depot_tools (之前也就300M左右,更新后約1.86G)了。
另外一個就是要獲取VS2013的工具鏈腳本(toolchain script)
該工具鏈腳本不會修改系統(tǒng)環(huán)境,所以使用VS13或者之前的VS10都木有問題。
下載后的工具鏈腳本存放在 depot_tools win_toolchain vs2013_files?
如果系統(tǒng)中安裝了VS2013,你可以用它來編輯和調(diào)試,ninja 將仍然使用depot_tools來構(gòu)建版本。
具體就以下兩步: [plain] view plaincopyprint?python?srctoolswintoolchaintoolchain.py???win_toolchainenv.bat??

python?srctoolswintoolchaintoolchain.py?
win_toolchainenv.bat

其實(shí),說白了就是要更新一下原來的depot_tools工具。如果depot_tools更新好了,其他的跟之前的大同小異。 比如: [plain] view plaincopyprint?>e:??>cd?E:chromium35??E:chromium35>gclient?config?http://src.chromium.org/svn/releases/35.0.1900.0??E:chromium35>gclient?sync?--force(以往這一步會強(qiáng)制同步代碼后生成解決方案,現(xiàn)在則會在同步一部分后出現(xiàn)找不到文件的錯誤)??E:chromium35>cd?src??E:chromium35>gclient?sync(確保源碼同步完成)??構(gòu)建方式有兩種,一個是使用?ninja?構(gòu)建??E:chromium35src>ninja?-C?outDebug?chrome??然后在?out/Debug?下就能看到編譯出來的文件。??另一種就是使用我們熟悉的VS來構(gòu)建,需要設(shè)置一個環(huán)境變量??GYP_GENERATORS=msvs-ninja,ninja??然后直接??E:chromium35src>gclient?runhooks??然后就能在?src/chrome/下找到chrome.sln的解決方案,調(diào)試方式就跟以前一樣了。??

>e:
>cd?E:chromium35
E:chromium35>gclient?config?http://src.chromium.org/svn/releases/35.0.1900.0
E:chromium35>gclient?sync?--force(以往這一步會強(qiáng)制同步代碼后生成解決方案,現(xiàn)在則會在同步一部分后出現(xiàn)找不到文件的錯誤)
E:chromium35>cd?src
E:chromium35>gclient?sync(確保源碼同步完成)
構(gòu)建方式有兩種,一個是使用?ninja?構(gòu)建
E:chromium35src>ninja?-C?outDebug?chrome
然后在?out/Debug?下就能看到編譯出來的文件。
另一種就是使用我們熟悉的VS來構(gòu)建,需要設(shè)置一個環(huán)境變量
GYP_GENERATORS=msvs-ninja,ninja
然后直接
E:chromium35src>gclient?runhooks
然后就能在?src/chrome/下找到chrome.sln的解決方案,調(diào)試方式就跟以前一樣了。


------------------------------------------------------------------------------------------------------------------------------------------- TIPS:如果是使用了chromium r254340(chromium33)之后的版本,可以直接下載我安裝好的depot_tools工具,然后配置一下環(huán)境變量就可以直接用了。
1.depot_tools工具,下載后解壓配置環(huán)境變量。 2.git的更新包(1.9的,下載后解壓到depot_tools文件夾下就OK) 3.VS2013開發(fā)工具
已經(jīng)生成解決方案的幾個源碼包: 1.Chromium36.0.1922.0 2.Chromium35.0.1913.0 3.Chromium35.0.1900.0 4.Chromium34.0.1847.116(chrome的最新正式版) 5.Chromium34.0.1757.0

之前一些舊版本的源碼包:(可供學(xué)習(xí)研究用,VS10的項目,部分已經(jīng)生成解決方案) 1.Chromium32.0.1678.0
2.Chromium31.0.1650.63
3.Chromium30.0.1587.0
4.Chromium29.0.1547.49 5.Chromium29.0.1544.0 6.Chromium28.0.1500.95
7.Chromium24.0.1301.0


?

在這里再說一下幾個問題:

1.是使用VS10和VS13編譯項目的一些區(qū)別:如果是用的33之前的版本源碼生成的10的解決方案,那么vs2010/sp1,win8sdk,DXSDK,depot_tools這些都需要有的,如果是用的最近的源碼,只需要弄好最新版的depot_tools,再安裝個13就一切OK!(其實(shí)使用ninja+vs13混合編譯最終調(diào)用的vs13是depot_tools下的那個,而我們要再安裝個VS13不過是修改和查看代碼用而已)運(yùn)行那個批處理設(shè)置一下直接用就行了!

2.一般的設(shè)置我們可以放在批處理中設(shè)置好,讓ninja知道我們要用的vs13,win8sdk等在我們下載好的depot_tools中!在src的同級目錄(或者說就是那個.gclient所在的目錄)新建一個批處理CreateBuild.bat 運(yùn)行這個批處理文件可能會比較慢,耐心等待命令行窗口退出后再打開chrome.sln開始編譯!批處理的內(nèi)容如下:

@echo off

for /f %%a in ('where gclient.bat') do set pwd=%%a
set pwd=%pwd:~0,-11%
set file=%pwd%win_toolchaindata.json
set pwd=%pwd:=\%

echo {"runtime_dirs": ["%pwd%win_toolchain\vs2013_files\sys64", "%pwd%win_toolchain\vs2013_files\sys32"], "path": "%pwd%win_toolchain\vs2013_files", "version": "2013e", "wdk": "%pwd%win_toolchain\vs2013_files\wdk", "win8sdk": "%pwd%win_toolchain\vs2013_files\win8sdk"} > %file%

set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library

call python ?srcbuildgyp_chromium

3.在最終的Release版本產(chǎn)品發(fā)布的時候,為了打包的需要可以把shared_library注釋掉rem?set GYP_DEFINES=component=shared_library改為靜態(tài)編譯,這個時候的編譯會比較慢特別是是最后的連接chrome.dll !

4.由于ninja+vs13這種混合編譯模式調(diào)用的都是depot_tools下的,所以直接在打開vs13中添加文件是不會被編譯到的,所以如果有在項目中添加文件就需要修改項目對應(yīng)的gyp或者gypi文件,將我們添加的文件目錄添加到sources節(jié)點(diǎn)下,然后重新運(yùn)行上邊的批處理文件!

5.最后再說一點(diǎn),那就是如果以前使用過vs2010編譯,在運(yùn)行CreateBuild.bat 這個批處理之前要刪除“C:Users$(username)AppDataLocalMicrosoftMSBuildv4.0”下props文件中關(guān)于$(DXSDK_DIR)的內(nèi)容。(重要)

?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉