如何解决 Chromium 编译时显示—注意: 包含文件:
在编译Chromium代码的时候,如果你使用的是中文版Visual Studio,可能会出现如下编译日志:
注意: 包含文件: C:\Program Files (x86)\Windows Kits\8.0\Include\shared\winerror.h
注意: 包含文件: C:\Program Files (x86)\Windows Kits\8.0\Include\shared\winerror.h
这是因为Chromium 工程编译的时候,使用了ninja作为构建管理器,C++语言编译器默认不会检查头文件依赖的改变,所以ninja 为编译命令行添加了 编译指令/showIncludes (显示该编译单元包含的头文件的)来解析依赖。
那么问题来了,为啥会出现那些诡异的错误呢?其实这是因为Chromium工程默认没有为Ninja配置
本地化的字符串过滤处理前缀,导致对本地化字符串的解析失败!
如何修改这些错误呢?
- 修改 tools\gyp\pylib\gyp\generator\ninja.py
master_ninja.newline()
master_ninja.variable('msvc_deps_prefix', '注意: 包含文件:') # ANSI
master_ninja.newline()
master_ninja.pool('link_pool', depth=GetDefaultConcurrentLinks())
master_ninja.newline()
- Run hooks 后 查看 build.ninja
ml_x86 = ml.exe
ml_x64 = ml64.exe
mt = mt.exe
msvc_deps_prefix = 注意: 包含文件:
pool link_pool
depth = 5
- 重新构建,让ninja 解析CPP依赖的头文件
参考【1】Ninja Source
参考【2】Ninja deps