如何从铬源构建无头示例浏览器

How build headless example browser from chromium source?

本文关键字:浏览器 构建      更新时间:2023-10-16

我正在尝试构建无头示例作为C++

铬库
https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md#usage-as-a-c_library
G:chromiumsrcheadless>gn gen  --args=is_debug=true --root=../ ../out/test
Done. Made 10741 targets from 1804 files in 21901ms
G:chromiumsrcheadless>ninja -C ../out/test headless_example
ninja: Entering directory `../out/test'
[24577/24577] LINK headless_example.exe headless_example.exe.pdb
G:chromiumsrcheadless>

Aftre build,我正在尝试启动headless_example.exe但出现错误

G:chromiumsrcouttest>headless_example.exe
[0121/145957.684:FATAL:command_line.cc(234)] Check failed: current_process_comma
ndline_.
Backtrace:
        base::debug::StackTrace::StackTrace [0x000007FEDF41AF29+105] (G:chromiu
msrcbasedebugstack_trace_win.cc:281)
        base::debug::StackTrace::StackTrace [0x000007FEDF419EC5+37] (G:chromium
srcbasedebugstack_trace.cc:203)
        logging::LogMessage::~LogMessage [0x000007FEDF46BA86+134] (G:chromiums
rcbaselogging.cc:591)
        base::CommandLine::ForCurrentProcess [0x000007FEDF3CE65B+155] (G:chromi
umsrcbasecommand_line.cc:235)
        headless::HeadlessBrowserMain [0x000007FED0F3DEDC+332] (G:chromiumsrc
headlesslibbrowserheadless_browser_impl.cc:284)
        main [0x000000013FA225F1+257] (G:chromiumsrcheadlessappheadless_exa
mple.cc:195)
        invoke_main [0x00000001402F0804+52] (f:ddvctoolscrtvcstartupsrcsta
rtupexe_common.inl:79)
        __scrt_common_main_seh [0x00000001402F093E+302] (f:ddvctoolscrtvcsta
rtupsrcstartupexe_common.inl:288)
        __scrt_common_main [0x00000001402F09BE+14] (f:ddvctoolscrtvcstartup
srcstartupexe_common.inl:331)
        mainCRTStartup [0x00000001402F09D9+9] (f:ddvctoolscrtvcstartupsrcs
tartupexe_main.cpp:17)
        BaseThreadInitThunk [0x0000000077BB59CD+13]
        RtlUserThreadStart [0x0000000077D1385D+29]

如何构建和运行headless_example?

更新

我的步骤

  1. gn gen --ide=vs2017 --filters="//headless" out\Headless
  2. 忍者 -C 出\无头headless_example

建造6小时后

  1. 光盘输出/无头
  2. ./headless_example.exe

我得到同样的错误。

但我成功地构建并运行了chromedriver

My Debug/args.gn

./out/Debug/args.gn

# GN args template for the Headless Chrome library
#
# Add import to arg.gn in out directory and run gn gen on the directory to use.
# E.g. for out directory out/foo:
# echo 'import("//build/args/headless.gn")' > out/foo/args.gn
# gn gen out/foo
#
# Use gn args to add your own build preference args.
use_ozone = true
ozone_auto_platforms = false
ozone_platform = "headless"
ozone_platform_headless = true
# Embed resource.pak into binary to simplify deployment.
headless_use_embedded_resources = true
# Expose headless bindings for freetype library bundled with Chromium.
headless_fontconfig_utils = true
# Remove a dependency on a system fontconfig library.
use_bundled_fontconfig = true
# In order to simplify deployment we build ICU data file
# into binary.
icu_use_data_file = false
# Use embedded data instead external files for headless in order
# to simplify deployment.
v8_use_external_startup_data = false
enable_nacl = false
enable_print_preview = false
enable_remoting = false
use_alsa = false
use_cups = false
use_dbus = false
use_gio = false
use_kerberos = false
use_libpci = false
use_pulseaudio = false
use_udev = false
rtc_use_pipewire = false
>gn gen  --args=is_debug=true --root=../ ../out/test

您输入的上述gn gen命令不正确。请改为尝试以下命令:

>cp ../build/args/headless.gn out/Debug/args.gn
>gn gen --root=../ ../out/test
>ninja -C ../out/test headless_example