chromium 添加features特性编译参数开关
具体参考gn的说明。
1,在全局里面设置编译参数的值:electron/build/args/testing.gn里面设置开关:
enable_desktop_capturer=false 会覆盖调定义时的值
也可使直接使用:
gn --args="enable_doom_melon=true enable_teleporter=false"
2,在使用它的模块中定义它,用declare_args()。
electron模块:\src\electron\buildflags\buildflags.gni
# Copyright (c) 2018 GitHub, Inc.
# Use of this source code is governed by the MIT license that can be
# found in the LICENSE file.
declare_args() {
enable_desktop_capturer = true
# Enable Chrome extensions support.
enable_electron_extensions = true
# Enable Spellchecker support
enable_builtin_spellchecker = true
}
打印模块src\printing\buildflags\buildflags.gni
import("//build/config/chromecast_build.gni")
import("//build/config/chromeos/args.gni")
import("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")
declare_args() {
# Enable basic printing support and UI.
enable_basic_printing = !is_chromecast && !is_ios && !is_fuchsia
}
3,在c++中引用:
#include "electron/buildflags/buildflags.h"
4,gn,gni文件引用它直接用 import("//printing/buildflags/buildflags.gni")
gni中:
if (enable_print_preview) { sources += [ "$root_gen_dir/chrome/print_preview_resources.pak" ] deps += [ "//chrome/browser/resources:print_preview_resources" ] }
原理:
将\src\printing\buildflags\buildflags.gni
在c++中,它会生成在gen目录,ENABLE_PDF_VIEWER的头文件在 D:\dev\electron9\src\out\Testing\gen\electron\buildflags\buildflags.h这里。
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
web_contents, std::make_unique<ElectronPDFWebContentsHelperClient>());
#endif
这个buildflag宏的产生需要:
D:\dev\electron9\src\out\Testing\gen\printing\buildflags\buildflags.h
// Generated by build/write_buildflag_header.py
// From "//printing/buildflags:buildflags"
#ifndef PRINTING_BUILDFLAGS_BUILDFLAGS_H_
#define PRINTING_BUILDFLAGS_BUILDFLAGS_H_
#include "build/buildflag.h"
#define BUILDFLAG_INTERNAL_ENABLE_PRINTING() (1)
#define BUILDFLAG_INTERNAL_ENABLE_PRINT_PREVIEW() (1)
#define BUILDFLAG_INTERNAL_ENABLE_TAGGED_PDF() (1)
#endif // PRINTING_BUILDFLAGS_BUILDFLAGS_H_
pdf的一次electron提交:
SHA-1: d590f2efe3abaeda909885855c2b901345284b55
* feat: enable pdf viewer (#21794)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?