• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            GYP使用技巧

            轉(zhuǎn)載自:http://lianliuwei.github.io/tools/2012/09/10/gyp-misc/

            GYP簡(jiǎn)介

            Again,這又是一個(gè)Google創(chuàng)造的編程工具,現(xiàn)在已經(jīng)用在了Chomium和其相關(guān)的工程中,使用是越來(lái)越廣泛。GYP是Generate Your Projects的縮寫,你可能會(huì)問,“又一個(gè)?,為什么?”,是的,這個(gè)世界上已經(jīng)有很多的工程生成工具,Automake, make, CMake, Visual Studio, Scons。GYP對(duì)比這些工具有這些優(yōu)點(diǎn):

            • 各平臺(tái)下使用主流的構(gòu)建系統(tǒng)

              看似沒什么,但這是一個(gè)相當(dāng)重要的特性,程序員都是懶惰的,提供的工具鏈最好是相應(yīng)平臺(tái)主流的開發(fā)工具,比如Windows下必然要用Visual Studio,不要搞什么Cgywin,msys之類的編譯鏈,也不要如Scons那樣,編譯還要用命令行,而且這樣有一個(gè)好處,就是速度問題不用自己考慮了,由相關(guān)的構(gòu)建系統(tǒng)負(fù)責(zé)。

            • 不用在特定平臺(tái)上生成構(gòu)建系統(tǒng)文件

              GYP生成相關(guān)的文件是不需要在特定的平臺(tái)下,因?yàn)樗募袷剑姹镜刃畔⒍甲约好枋龊昧耍華utomake生成Visual C++工程還要用調(diào)用Visual Studio好多了(沒有核實(shí)過)

            • 生成的文件跟手工創(chuàng)建的文件沒有區(qū)別

              這意味著你可以用到一半不用GYP了,直接用生成的工程文件繼續(xù)項(xiàng)目,或者提交工程文件到版本庫(kù)中,項(xiàng)目其他成員就不用學(xué)習(xí)GYP,Automake生成的工程就屬于機(jī)器代碼,各種間接調(diào)用,各種神秘的宏。

            • 生成工程后就無(wú)需GYP

            可以看出GYP就是以Automake為競(jìng)爭(zhēng)對(duì)手,解決的也是Automake中設(shè)計(jì)失誤,使得這個(gè)工具專注生成工程。

            chromium工程09年以前用的Scons構(gòu)建工具,后來(lái)改成GYP的方法,當(dāng)初開發(fā)者抱怨最多的就是不熟悉構(gòu)建系統(tǒng),使用不方便,速度慢,可以看出使用native的工具鏈?zhǔn)嵌嗝粗匾?/p>

            git倉(cāng)庫(kù)

            官網(wǎng)給出的是SVN倉(cāng)庫(kù),不過就如同chromium的其他工程,都有一個(gè)對(duì)應(yīng)的git工程,git倉(cāng)庫(kù)比SVN倉(cāng)庫(kù)好就不說(shuō)了,直接上地址http://git.chromium.org/external/gyp.git,博主上傳了一份到github上https://github.com/lianliuwei/gyp (不保證是同步的)

            GYP結(jié)構(gòu)

            GYP的輸入是.gyp和.gypi文件,.gypi文件是用于.gyp文件include使用的。.gyp文件就是符合特定格式的json文件。

            gyp文件中包含target,Visual C++下,gyp生成sln,target生成vcproj或vxcproj。

            chromium中GYP結(jié)構(gòu)是,通過命令行統(tǒng)一使用build/common.gypi的公共文件,工程的配置,選項(xiàng)的處理,編譯選項(xiàng)的使用,都是在這個(gè)文件中配置,所有造成了這個(gè)文件超級(jí)大,129KB。生成一個(gè)總工程all.gyp,這個(gè)工程依賴于其他所有的工程,這個(gè)工程生成,所有工程都生成完成。而且有一個(gè)總工程也方便開發(fā)。

            如果要使用GYP,建議依照chromium的結(jié)構(gòu),common.gypi也用chromium的進(jìn)行裁剪,畢竟各種選項(xiàng)的選擇也是需要經(jīng)驗(yàn)的。

            使用GYP

            chromium工程中的方法是使用build/gyp_chromium這個(gè)Python腳本來(lái)調(diào)用,這個(gè)腳本實(shí)現(xiàn)添加公共配置,偵測(cè)附加配置,添加需要的編譯選項(xiàng)。

            一般使用沒必要使用這么復(fù)雜的腳本,直接使用一個(gè)bat文件就都搞定。

            chromium_base工程示例

            build_proj.bat

            call setup_env.bat
            tools\gyp\gyp.bat --depth . -D component=shared_library --no-circular-check -G msvs_version=2008 -Ibuild/common.gypi build_add/all.gyp
            

            setup_env.bat

            :: This script adds python to the path
            @echo OFF
            set PATH=C:\Python\Python27;%PATH%
            

            setup_env.bat的作用就是設(shè)置Python路徑,單獨(dú)分離出來(lái)不但是為了更方便的修改,而且是以后工程中VS調(diào)用Python命令行用(這個(gè)之后再解釋)

            關(guān)機(jī)的是build_proj.bat。使用了GYP調(diào)用的總?cè)肟冢?code style="border-bottom: #e1e1e8 1px solid; border-left: #e1e1e8 1px solid; padding-bottom: 3px; background-color: #f7f7f9; padding-left: 4px; padding-right: 4px; font-family: Menlo, Monaco, 'Courier New', monospace; color: #dd1144; font-size: 12px; border-top: #e1e1e8 1px solid; border-right: #e1e1e8 1px solid; padding-top: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px">gyp/gyp.bat。--depth 是為了定義工程的根目錄在哪里,需要給出。-D 設(shè)置GYP中的參數(shù), --no-circular-check是chromium代碼中的問題,一般GYP文件是不允許環(huán)形依賴的,但是由于歷史原因chromium中的依賴關(guān)系還沒有解決,如果你使用chromium中的GYP,建議加上這個(gè)選項(xiàng),不然就得自己解決環(huán)形依賴。-Ibuild/common.gypi 用來(lái)加載所有工程的公用文件。build_add/all.gyp 是總的工程文件。

            定制生成工程

            現(xiàn)在默認(rèn)GYP在Windows下生成Visual Studio 2010工程,但是使用2008的同學(xué)還是很多的,改變生成工程很簡(jiǎn)單。

            1. 使用環(huán)境變量,GYP_MSVS_VERSION=2008

            2. 使用命令行參數(shù), -G msvs_version=2008

            相關(guān)的版本可以填2005, 2008, 2010, 2005e, 2008e等,(支持的版本還是很多的,連express版本都有!)

            定制相關(guān)參數(shù)

            構(gòu)建系統(tǒng)的一大任務(wù)就是根據(jù)不同需要確定編譯參數(shù),需要編譯的子工程,設(shè)置相關(guān)的宏參數(shù)使得C或者C++代碼正確編譯。GYP在選項(xiàng)相關(guān)的管理是自己做的,也就是說(shuō)如果要改變相關(guān)的選項(xiàng),就要更新生成的工程。不過看源代碼可以知道,GYP選項(xiàng)這部分相當(dāng)?shù)娜酰褂孟喈?dāng)古怪的語(yǔ)法。這個(gè)之后慢慢說(shuō)明,同樣的,定制參數(shù)也有兩種方法

            1. 環(huán)境變量法, 如GYP_DEFINES=windows_sdk_path="path to sdk",不過在cmd下環(huán)境變量的方法只能定義一個(gè),而且不能包含空格,不推薦使用這個(gè)方法

            2. 命令行參數(shù),-D XXX -D YYY=ZZZ

            GYP代碼分析

            博主尚未研究透,后續(xù)再說(shuō)

            posted on 2013-09-08 02:47 楊粼波 閱讀(16443) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲精品无码久久久| 色婷婷综合久久久久中文 | 亚洲AV无码久久寂寞少妇| 久久精品国产久精国产果冻传媒| 久久国产三级无码一区二区| 亚洲午夜无码AV毛片久久| 伊人久久大香线蕉AV一区二区| 亚洲国产精品无码久久| 国产精品久久久久久吹潮| 久久综合色区| 国产精品欧美亚洲韩国日本久久 | 免费观看久久精彩视频| 久久久黄色大片| 99国内精品久久久久久久| 久久久久久国产精品免费无码| 亚洲人成无码久久电影网站| 久久综合88熟人妻| 久久人人爽人人澡人人高潮AV | 青青草原精品99久久精品66 | 欧美精品一区二区精品久久| 久久丫忘忧草产品| 无码人妻少妇久久中文字幕| 国产69精品久久久久99尤物| 老色鬼久久亚洲AV综合| 久久久久国产精品三级网| 久久婷婷国产麻豆91天堂| 久久亚洲私人国产精品vA| 中文字幕久久亚洲一区| 久久青青草原精品国产软件| 2020久久精品国产免费| 久久国产一区二区| 亚洲国产精品久久久久网站| 日韩人妻无码一区二区三区久久| 香蕉久久夜色精品国产尤物| 品成人欧美大片久久国产欧美| 久久久久亚洲AV成人片| 久久精品久久久久观看99水蜜桃| 亚洲人成无码网站久久99热国产| 久久久久久A亚洲欧洲AV冫| 久久久精品久久久久特色影视| a级毛片无码兔费真人久久|