chrome源码最后一个支持xp版本(49.0.2623.112)代码下载和编译

一、环境
    1、Win10专业版
    2、VS2015英文版(安装时勾选14343版本Windows10SDK)
    3、控制面板->区域->管理->更改系统区域设置,选择英语
    4、准备好VPN,推荐https://myxgj.com
二、下载chrome源代码
    1、下载生成工程工具depot_tools
    2、系统环境变量中添加
        DEPOT_TOOLS_WIN_TOOLCHAIN=0
        GYP_MSVS_VERSION=2015
        GYP_GENERATORS=msvs-ninja,ninja
    3、cmd 命令行运行gclient
三、编译
    1、cmd命令行cd到下载文件夹中的src目录
    2、切换分支git checkout 55.0.2883.105(推荐用TortoiseGit中的Switch/CheckOut切换)
    3、cmd命令行输入"gclient sync --force"同步代码
    4、D:\chromium\src\build\vs_toolchain.py中找到
        # If WINDOWSSDKDIR is not set, search the default SDK path and set it.
        if not 'WINDOWSSDKDIR' in os.environ:
        default_sdk_path = 'C:\\Program Files (x86)\\Windows Kits\\8.1'
        if os.path.isdir(default_sdk_path):
         os.environ['WINDOWSSDKDIR'] = default_sdk_path
    //设置default_sdk_path = 'C:\\Program Files (x86)\\Windows Kits\\10',使其默认用Windows10SDK
    //5、chromium\src\build\config\compiler\BUILD.gn中设置
    //  treat_warnings_as_errors = false
    //  解决把警告视为错误的问题
    //6、src\tools\gyp\pylib\gyp\MSVSVersion.py :237行 v140改为v140_xp,使其支持xp
    7、ffmpeg中有个全局常变量(变量名已经忘记)找不到符号,可以删除引用的头文件,自己定义改变量(因为是常变量)
    8、delay_load_hook_win.cc中
        #include 之前加#define DELAYIMP_INSECURE_WRITABLE_HOOKS(注意是"之前")
        PfnDliHook __pfnDliNotifyHook2 = ChromeDelayLoadHook;
        PfnDliHook __pfnDliFailureHook2 = ChromeDelayLoadHook;
        变量前面加extern
        解决这2个变量重新定义的编译问题
    9、cmd命令行依次输入一下命令开始编译:
        $gn args out/Release
        上面这个命令会打开一个文本文件,在文件在输入
           is_component_build = false
           is_debug = false
           target_cpu = "x86"
           symbol_level = 0
           dcheck_always_on = false
           is_official_build = true
           treat_warnings_as_errors = false
           ffmpeg_branding = "Chrome"
           proprietary_codecs = true
        $gn gen  out/Release --ide=vs
        $gn gen --ide=vs --filters=//chrome out\Release //简化版

        $ninja -C out/Release chrome

Debug版

     $gn args out/Debug
        上面这个命令会打开一个文本文件,在文件在输入
           is_component_build = true
           is_debug = false
           target_cpu = "x86"
           symbol_level = 2
           dcheck_always_on = false
           is_official_build = true
           treat_warnings_as_errors = false
           ffmpeg_branding = "Chrome"
           proprietary_codecs = true
        $gn gen  out/Debug --ide=vs
        $gn gen --ide=vs --filters=//chrome out\Debug //简化版

        $ninja -C out/Debug chrome


        
###########################资料##############################
1、官方文档https://www.chromium.org/developers
2、关于VS调试chrome以及chrome代码大致的架构:https://github.com/pengx17/pengx17.github.io/blob/master/_posts/2012-12-05-learning-chromium.md
调试:    
    devenv /debugexe out\Debug\7654Browser.exe --renderer-startup-dialog --no-sandbox
3、本地化:http://blog.csdn.net/tfancy2012/article/details/51524293
4、chrome.user32.delay.imports中标记的函数xp中没有
//5、xp中如果打不开网页或者找不到函数,直接删除该函数的调用

你可能感兴趣的:(chrome源码最后一个支持xp版本(49.0.2623.112)代码下载和编译)