谷歌Chromium源码添加头文件时如何配置GN Ninja构建文件
问题原因
你在//content/browser/devtools/protocol/page_handler.cc中引入了Chrome上层的头文件,而//content/browser:browser构建目标的默认依赖列表中没有包含这些头文件所属的//chrome/browser/ui:ui目标,因此GN依赖检查触发报错。
解决步骤
- 第一步:找到
src/content/browser/BUILD.gn文件,打开后定位到source_set("browser")的配置段 - 第二步:在该配置段的
deps列表中新增一行依赖声明:
修改后的deps段示例:"//chrome/browser/ui:ui",source_set("browser") { # 原有其他配置项 deps = [ # 原有已有依赖项 "//chrome/browser/ui:ui", # 新增的依赖项 ] # 原有其他配置项 } - 第三步:如果新增依赖后仍然报visibility权限错误,说明
//chrome/browser/ui:ui目标默认限制了可访问范围,需要修改src/chrome/browser/ui/BUILD.gn:定位到source_set("ui")配置段,在visibility列表中新增"//content/browser:*"即可开放访问权限。 - 第四步:重新执行
gn check out/Default验证依赖问题是否解决。
注意事项
- Chrome源码架构设计中content层为独立底层模块,正常上游开发规范不允许content层直接依赖chrome上层代码,如果你是做自定义功能可以忽略该分层约束,如果是准备向上游提交代码需要调整实现方案避免跨层依赖。
内容的提问来源于stack exchange,提问作者LGCD
相关产品推荐
相关产品推荐

