Windows7下从源码编译CEF

编译Google的代码有各种坑,特此记录。编译CEF的2785版本,Win7-64+VS2015。

一、准备工作

工具:depot_tools、python、git,配置好环境变量,vpn连接使用系统的设置新连接,不要用客户端,在后面会有下载不了文件的情况。

二、下载源码

1.设置变量
set GIT_CURL_VERBOSE=1
set DEPOT_TOOLS_WIN_TOOLCHAIN=0 
set GYP_GENERATORS=ninja,msvs-ninja 
set GYP_MSVS_VERSION=2015
set CEF_VCVARS=E:\vs2015\VC\bin\vcvars32.bat 
其中vs路径只需在未安装默认路径报错时使用,貌似不设置好像也没事。
2.漫长的等待
python automate-git.py --download-dir=G:\lib\cef\2785\source --branch=2785 
完成后会在source下生成cef、chromium文件夹。

三、编译

python automate-git.py --download-dir=G:\lib\cef\2785\source --branch=2785 --no-update --force-build --force-distrib --no-release-build
--force-build避免出现错误要删除out文件夹重新来过,--no-release-build可以选择性编译Debug或Relase节省时间,--force-distrib会在cef目录下生产发布包。
中间难免会出错,所以在命令末尾加上几句
>a.txt &a.vbs
其中a.vbs内容随便写只要在编译停止时能弹框就行,方便干别的事 偷笑
遇到error:C2220时要么设置系统local为English需要重启,要么就是老实改文件编码,其实后者比较好。
输出的错误在a.txt中,就可以通过工具自动处理这个问题
public static void main(String[] args) throws Exception {
		Reader red=new FileReader("g:\\lib\\cef\\2785\\a.txt");
		BufferedReader bfi=new BufferedReader(red);
		String lineTxt=null;
		final String endTxt=": error C2220: 警告被视为错误 - 没有生成“object”文件";
		Set<String> listFileNames=new LinkedHashSet<>();
		int bFind=0;
		while((lineTxt=bfi.readLine())!=null){
			if(1==bFind){
				bFind++;
			}
			int idxEf=lineTxt.indexOf(endTxt);
			if(-1!=idxEf){
				listFileNames.add(lineTxt.substring(0, idxEf));
				bFind=1;
			}
			if(2==bFind){
				System.out.println("===========");
				System.out.println(lineTxt);
				System.out.println("===========");
				bFind=0;
			}
		}
		bfi.close();
		red.close();
		StringBuffer sb=new StringBuffer();
		int i=0;
		for (String string : listFileNames) {
			int idxk=string.lastIndexOf('(');
			if(-1!=idxk){
				string=string.substring(0, idxk);
			}
			//sb.append(String.format("cmd /c start /w notepad %s", string));
			final String str2=string.replace("\\", "/");
			System.out.println(str2);
			sb.append(String.format("cmd /c start /w cscript e:/systool/chcode.vbs %s %s", str2,str2));
			if(i<listFileNames.size()-1){
				sb.append(" & ");
			}
			i++;
		}
		System.out.println("   "+listFileNames.size());
		if(listFileNames.size()>0){
			sb.append(" & ");
		}
		try {
			Runtime.getRuntime().exec(sb.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
其中log路径与编译命令中的对应,用于转换编码的工具可以自行准备或者用chcode.vbs,本站可以搜到,如此便做到快速处理此类错误,配合可编程鼠标最佳。
提示系统找不到指定路径时看具体日志可能是SDK不对应,要求是 10.0.10586版本,需要安装,这也是个坑,报错却没有提示错误,原来是
C:\Program Files (x86)\Windows Kits下已经有了10文件夹,重命名即可,不要删除,然后把原来10里面的lib和include文件夹拷贝到新的里面,不然会连基本的头文件都找不到,其他可能会有一点语法错误稍微改改就能通过。
使用cmake打开CMakeLists.txt生产VS项目编译运行。ok,不是很复杂,只是有些需要注意的问题,容易走弯路。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值