Добро пожаловать в другие главы Давайте разберемся с Chrome V8

1. Оформить заказ, построить

1. 1. Системные требования

win 10 64bit, сообщество VS2019, Git

Win 10 64bit, сообщество VS2019, Git, Windows 10 SDK (10.0.19041 и выше). Примечание. Установите SDK отдельно, не используйте установщик VS, поскольку пакет SDK, установленный с помощью установщика VS, неполный.

1.2. депо_инструменты

Загрузите пакет depot_tools и извлеките его куда-нибудь.

Предупреждение: НЕ используйте извлечение методом перетаскивания или копирования и вставки из Проводника, это не приведет к извлечению скрытой папки «.git», которая необходима для автоматического обновления depot_tools. Однако вы можете использовать «Извлечь все…» из контекстного меню.

Добавьте depot_tools в начало вашего PATH (должно быть впереди любых установок Python. Обратите внимание, что имена переменных среды нечувствительны к регистру).

Предполагая, что вы разархивировали пакет в C:\src\depot_tools, откройте: Панель управления → Система и безопасность → Система → Дополнительные параметры системы.

Если у вас есть доступ администратора, измените системную переменную PATH и поместите C:\src\depot_tools впереди (или, по крайней мере, перед любым каталогом, в котором уже может быть копия Python или Git).

Если у вас нет прав администратора, вы можете добавить переменную среды PATH на уровне пользователя, открыв: Панель управления → Система и безопасность → Система → Найдите «Изменить переменные среды для вашей учетной записи».

Добавьте C:\src\depot_tools впереди. Примечание. Если в вашем системном PATH есть Python, вам не повезет.

Кроме того, таким же образом добавьте переменную среды DEPOT_TOOLS_WIN_TOOLCHAIN ​​и установите для нее значение 0. Это говорит depot_tools использовать вашу локально установленную версию Visual Studio (по умолчанию depot_tools попытается использовать внутреннюю версию Google).

Из оболочки cmd.exe запустите. Примечание. Нет Powershell!

При первом запуске gclient установит все специфичные для Windows биты, необходимые для работы с кодом, включая msysgit и python.

Если вы запускаете gclient из оболочки, отличной от cmd (например, cygwin, PowerShell), может показаться, что он работает правильно, но msysgit, python и другие инструменты могут быть установлены неправильно.

Если вы видите странные ошибки с файловой системой при первом запуске gclient, вы можете отключить индексирование Windows.

1.3. Получить код

Сначала настройте Git:

Создайте каталог chromium для оформления заказа и перейдите в него (вы можете называть его как угодно и помещать куда угодно, если в полном пути нет пробелов):

Получить V8

fetch v8
git pull origin master

Не менее 10 ГБ свободного места на жестком диске с файловой системой NTFS.

Создать файл проекта GN

> cd ~\v8\src
> gn gen --ide=vs out\default --args="is_component_build = true is_debug = true v8_optimized_debug = false"

«is_debug = true» включает отладку V8, «v8_optimized_debug = false» отключает оптимизацию, которая мешает отладке. Мой args.gn ниже:

is_component_build = true
is_debug = true
v8_optimized_debug = false
v8_use_snapshot = false

1.4. Создавайте и запускайте

Скомпилируйте V8 с VS2019

src\out\default — -›all.sln, откройте его, как показано на рисунке 1.

В обозревателе решений есть v8_hello_world, щелкните его правой кнопкой мыши, чтобы «Установить как запускаемый проект», а затем выполните сборку. Вы можете увидеть процесс компиляции в окне вывода, как показано на рисунке 1.

На рисунке 2 показан стек вызовов hello-world.cc.

Таким образом, если вы видите странные ошибки, возможно, связанные с версией SDK или путем к среде.

2. Где наша отправная точка

V8 имеет огромный код, поэтому нам нужно найти простой способ.

Исходный код V8 находится в src, как показано на рисунке 3.

Мы начинаем учиться с hello-world.cc (он находится в каталоге примеров), как показано на рисунке 1.

V8 — это механизм JavaScript, hello-world.cc включает в себя инициализацию, создание изоляции, создание дескриптора, компиляцию и выполнение JavaScript.

Опять же, проще всего отлаживать hello-world.cc шаг за шагом.

Итак, мой блог — cncyclops.com.

Пожалуйста, свяжитесь со мной, если у вас есть какие-либо проблемы.

WeChat: qq9123013 Электронная почта: [email protected]