zoukankan      html  css  js  c++  java
  • 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模块:srcelectronuildflagsuildflags.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
    }

    打印模块srcprintingbuildflagsuildflags.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" ]
        }

    原理:

    将srcprintinguildflagsuildflags.gni 

    在c++中,它会生成在gen目录,ENABLE_PDF_VIEWER的头文件在 D:develectron9srcoutTestinggenelectronuildflagsuildflags.h这里。

    #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
      pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
          web_contents, std::make_unique<ElectronPDFWebContentsHelperClient>());
    #endif

    这个buildflag宏的产生需要:

    D:develectron9srcoutTestinggenprintinguildflagsuildflags.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)


  • 相关阅读:
    API网络数据安全
    【值得收藏】一文掌握用户画像系统构建全流程
    手把手教你从0到1学会tensorflow进行模型训练,并能在网页轻松运行
    APP选择第三方消息推送平台时,有哪些需要关注的重要性能指标?
    如何防薅羊毛?个推基于大数据风控引擎助力APP反欺诈!
    微信为什么要搞一个小游戏?
    关于 JS 模块化的最佳实践总结
    张小龙2019微信公开课15个看点总结
    编程:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意
    JS是如何计算 1+1=2 的?
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13931301.html
Copyright © 2011-2022 走看看