Добро пожаловать в другие главы Давайте разберемся с 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]