编译Google的代码有各种坑,特此记录。编译CEF的2785版本,Win7-64+VS2015。
一、准备工作
工具:depot_tools、python、git,配置好环境变量,vpn连接使用系统的设置新连接,不要用客户端,在后面会有下载不了文件的情况。
安装脚本:
https://bitbucket.org/chromiumembedded/cef/src/2785?at=2785全部下载或者只要
https://bitbucket.org/chromiumembedded/cef/src/2b5c3a71857b9d885a46091fed3d084731f8df23/tools/automate/?at=2785下的automate-git.py。
二、下载源码
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内容随便写只要在编译停止时能弹框就行,方便干别的事
![偷笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/titter.gif)
遇到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,不是很复杂,只是有些需要注意的问题,容易走弯路。
使用cmake打开CMakeLists.txt生产VS项目编译运行。ok,不是很复杂,只是有些需要注意的问题,容易走弯路。