https://bitbucket.org/chromiumem ... sterBuildQuickStart WikiClone wiki cef / MasterBuildQuickStartViewHistory This Wiki page provides a quick-start guide for creating a Debug build of CEF/Chromium using the current master (development) branch. Note to Editors: Changes made to this Wiki page without prior approval via the CEF Forum or Issue Tracker may be lost or reverted. Overview This page provides a quick-start guide for setting up a minimal development environment and building the master branch of Chromium/CEF for development purposes. For a comprehensive discussion of the available tools and configurations visit the BranchesAndBuilding Wiki page. This guide is NOT intended for:
Development systems can be configured using dedicated hardware or a VMware, Parallels or VirtualBox virtual machine. The below steps can often be used to develop the most recent release branch of CEF/Chromium in addition to the master branch. Chromium build requirements change over time so review the build requirements listed on the BranchesAndBuilding Wiki page before attempting to build a release branch. Then just add --branch=XXXX to the automate-git.py command-line where "XXXX" is the branch number you wish to build. File StructureThe same file structure will be used on all platforms. "~" can be any path that does not include spaces or special characters. We'll be building this directory structure for each platform in the following sections. ~/code/ automate/ automate-git.py <-- CEF build script chromium_git/ cef/ <-- CEF source checkout chromium/ src/ <-- Chromium source checkout update.[bat|sh] <-- Bootstrap script for automate-git.py depot_tools/ <-- Chromium build toolsWith this file structure you can develop multiple CEF/Chromium branches side-by-side. For example, repeat the below instructions using "chromium_git1" as the directory name instead of "chromium_git". Windows SetupWhat's Required
Step-by-step Guide All of the below commands should be run using the system "cmd.exe" and not a Cygwin shell. 1. Create the following directories. c:\code\automatec:\code\chromium_gitWARNING: If you change the above directory names/locations make sure to (a) use only ASCII characters and (b) choose a short file path (less than 35 characters total). Otherwise, some tooling may fail later in the build process due to invalid or overly long file paths. 2. Download depot_tools.zip and extract to "c:\code\depot_tools". Do not use drag-n-drop or copy-n-paste extract from Explorer, this will not extract the hidden ".git" folder which is necessary for depot_tools to auto-update itself. You can use "Extract all..." from the context menu though. 7-zip is also a good tool for this. 3. Run "update_depot_tools.bat" to install Python and Git. cd c:\code\depot_toolsupdate_depot_tools.bat4. Add the "c:\code\depot_tools" folder to your system PATH. For example, on Windows 10:
5. Download the automate-git.py script to "c:\code\automate\automate-git.py". 6. Create the "c:\code\chromium_git\update.bat" script with the following contents. set GN_DEFINES=is_component_build=trueset GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*python3 ..\automate\automate-git.py --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools --no-distrib --no-buildRun the "update.bat" script and wait for CEF and Chromium source code to download. CEF source code will be downloaded to "c:\code\chromium_git\cef" and Chromium source code will be downloaded to "c:\code\chromium_git\chromium\src". After download completion the CEF source code will be copied to "c:\code\chromium_git\chromium\src\cef". cd c:\code\chromium_gitupdate.bat7. Create the "c:\code\chromium_git\chromium\src\cef\create.bat" script with the following contents. set GN_DEFINES=is_component_build=trueset GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*call cef_create_projects.batRun the "create.bat" script to generate Ninja and Visual Studio project files. cd c:\code\chromium_git\chromium\src\cefcreate.batThis will generate a "c:\code\chromium_git\chromium\src\out\Debug_GN_x86\cef.sln" file that can be loaded in Visual Studio for debugging and compiling individual files. Replace “x86” with “x64” in this path to work with the 64-bit build instead of the 32-bit build. Always use Ninja to build the complete project. Repeat this step if you change the project configuration or add/remove files in the GN configuration (BUILD.gn file). 8. Create a Debug build of CEF/Chromium using Ninja. Edit the CEF source code at "c:\code\chromium_git\chromium\src\cef" and repeat this step multiple times to perform incremental builds while developing. cd c:\code\chromium_git\chromium\srcautoninja -C out\Debug_GN_x86 cefReplace "Debug" with "Release" to generate a Release build instead of a Debug build. Replace “x86” with “x64” to generate a 64-bit build instead of a 32-bit build. 9. Run the resulting cefclient sample application. cd c:\code\chromium_git\chromium\srcout\Debug_GN_x86\cefclient.exeSee the Windows debugging guide for detailed debugging instructions. Mac OS X SetupWhat's Required
Step-by-step Guide In this example "~" is "/Users/marshall". Note that in some cases the absolute path must be used. Environment variables described in this section can be added to your "~/.bash_profile" file to persist them across sessions. 1. Create the following directories. mkdir ~/codemkdir ~/code/automatemkdir ~/code/chromium_git2. Download "~/code/depot_tools" using Git. cd ~/codegit clone https://chromium.googlesource.com/chromium/tools/depot_tools.git3. Add the "~/code/depot_tools" directory to your PATH. Note the use of an absolute path here. export PATH=/Users/marshall/code/depot_toolsPATH4. Download the automate-git.py script to "~/code/automate/automate-git.py". 5. Create the "~/code/chromium_git/update.sh" script with the following contents. #!/bin/bashpython3 ../automate/automate-git.py --download-dir=/Users/marshall/code/chromium_git --depot-tools-dir=/Users/marshall/code/depot_tools --no-distrib --no-build --x64-build⚠ Replace --x64-build with --arm64-build if using an Apple Silicon Mac instead of an Intel Mac. Give it executable permissions. cd ~/code/chromium_gitchmod 755 update.shRun the "update.sh" script and wait for CEF and Chromium source code to download. CEF source code will be downloaded to "~/code/chromium_git/cef" and Chromium source code will be downloaded to "~/code/chromium_git/chromium/src". After download completion the CEF source code will be copied to "~/code/chromium_git/chromium/src/cef". cd ~/code/chromium_git./update.sh6. Run the "~/code/chromium_git/chromium/src/cef/cef_create_projects.sh" script to create Ninja project files. Repeat this step if you change the project configuration or add/remove files in the GN configuration (BUILD.gn file). cd ~/code/chromium_git/chromium/src/cef./cef_create_projects.sh⚠ Add export GN_DEFINES=is_component_build=true before running cef_create_projects.sh if using an Apple Silicon Mac instead of an Intel Mac. 7. Create a Debug build of CEF/Chromium using Ninja. Edit the CEF source code at "~/code/chromium_git/chromium/src/cef" and repeat this step multiple times to perform incremental builds while developing. cd ~/code/chromium_git/chromium/srcautoninja -C out/Debug_GN_x64 cef⚠ Replace "x64" with "arm64" if using an Apple Silicon Mac instead of an Intel Mac. Replace "Debug" with "Release" to generate a Release build instead of a Debug build. 8. Run the resulting cefclient, cefsimple and/or ceftests sample applications. cd ~/code/chromium_git/chromium/srcopen out/Debug_GN_x64/cefclient.app# Or run directly in the console to see log output:./out/Debug_GN_x64/cefclient.app/Contents/MacOS/cefclientSee the Mac OS X debugging guide for detailed debugging instructions. Linux SetupWhat's Required
Step-by-step Guide In this example "~" is "/home/marshall". Note that in some cases the absolute path must be used. Environment variables described in this section can be added to your "~/.profile" or "~/.bashrc" file to persist them across sessions. 1. Create the following directories. mkdir ~/codemkdir ~/code/automatemkdir ~/code/chromium_git2. Download and run "~/code/install-build-deps.py" to install build dependencies. Answer Y (yes) to all of the questions. cd ~/codesudo apt-get install curl file lsb-release procps python3 python3-pipcurl 'https://chromium.googlesource.com/chromium/src/+/main/build/install-build-deps.py?format=TEXT' | base64 -d > install-build-deps.pysudo python3 ./install-build-deps.py --no-arm --no-chromeos-fonts --no-naclpython3 -m pip install dataclasses importlib_metadata3. Download "~/code/depot_tools" using Git. cd ~/codegit clone https://chromium.googlesource.com/chromium/tools/depot_tools.git4. Add the "~/code/depot_tools" directory to your PATH. Note the use of an absolute path here. export PATH=/home/marshall/code/depot_toolsPATH5. Download the "~/automate/automate-git.py" script. cd ~/code/automatewget https://bitbucket.org/chromiumem ... ate/automate-git.py6. Create the "~/code/chromium_git/update.sh" script with the following contents. #!/bin/bashpython3 ../automate/automate-git.py --download-dir=/home/marshall/code/chromium_git --depot-tools-dir=/home/marshall/code/depot_tools --no-distrib --no-buildGive it executable permissions. cd ~/code/chromium_gitchmod 755 update.shRun the "update.sh" script and wait for CEF and Chromium source code to download. CEF source code will be downloaded to "~/code/chromium_git/cef" and Chromium source code will be downloaded to "~/code/chromium_git/chromium/src". After download completion the CEF source code will be copied to "~/code/chromium_git/chromium/src/cef". cd ~/code/chromium_git./update.sh7. Configure GN_DEFINES for your desired build environment. Chromium provides sysroot images for consistent builds across Linux distros. The necessary files will have downloaded automatically as part of step 6 above. Usage of Chromium's sysroot is recommended if you don't want to deal with potential build breakages due to incompatibilities with the package or kernel versions that you've installed locally. To use the sysroot image configure the following GN_DEFINES: export GN_DEFINES="use_sysroot=true use_allocator=none symbol_level=1 is_cfi=false use_thin_lto=false"It is also possible to build using locally installed packages instead of the provided sysroot. Choosing this option may require additional debugging effort on your part to work through any build errors that result. On Ubuntu 18.04 the following GN_DEFINES have been tested to work reliably: export GN_DEFINES="use_sysroot=false use_allocator=none symbol_level=1 is_cfi=false use_thin_lto=false use_vaapi=false"Note that the "cefclient" target cannot be built directly when using the sysroot image. You can work around this limitation by creating a binary distribution after completing step 9 below, and then building the cefclient target using that binary distribution. You can also create an AddressSanitizer build for enhanced debugging capabilities. Just add is_asan=true dcheck_always_on=true to the GN_DEFINES listed above and build the out/Release_GN_x64 directory in step 9 below. Run with the asan_symbolize.py script as described in the AddressSanitizer link to get symbolized output. The various other listed GN arguments are based on recommendations from the AutomateBuildSetup Wiki page. You can search for them by name in the Chromium source code to find more details. 8. Run the "~/code/chromium_git/chromium/src/cef/cef_create_projects.sh" script to create Ninja project files. Repeat this step if you change the project configuration or add/remove files in the GN configuration (BUILD.gn file). cd ~/code/chromium_git/chromium/src/cef./cef_create_projects.sh9. Create a Debug build of CEF/Chromium using Ninja. Edit the CEF source code at "~/code/chromium_git/chromium/src/cef" and repeat this step multiple times to perform incremental builds while developing. Note the additional "chrome_sandbox" target may be required by step 10. The "cefclient" target will only build successfully if you set use_sysroot=false in step 7, so remove that target if necessary. cd ~/code/chromium_git/chromium/srcautoninja -C out/Debug_GN_x64 cefclient cefsimple ceftests chrome_sandboxReplace "Debug" with "Release" to generate a Release build instead of a Debug build. 10. Set up the Linux SUID sandbox if you are using an older kernel (< 3.8). See here for more background on Linux sandboxing technology. # This environment variable should be set at all times.export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox# This command only needs to be run a single time.cd ~/code/chromium_git/chromium/srcsudo BUILDTYPE=Debug_GN_x64 ./build/update-linux-sandbox.sh11. Run the cefclient, cefsimple and/or ceftests sample applications. Note that the cefclient application will only have built successfully if you set use_sysroot=false in step 7. cd ~/code/chromium_git/chromium/src./out/Debug_GN_x64/cefclientSee the Linux debugging guide for detailed debugging instructions. Next Steps
Updated 2023-11-15 |
|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )
GMT+8, 2024-11-25 07:22 , Processed in 0.068827 second(s), 23 queries .
Powered by Discuz! X3
© 2001-2013 Comsenz Inc.