Хорошо, похоже, моей первой ошибкой было изменение приглашения на v8\tools\dev\
и работа оттуда.«Нормальные» шаги, которые я нашел, на самом деле работают правильно только из корня источника.Я закончил с v8\tools\dev\out\x64.release
, затем ninja -C out/x64.release v8
потерпел неудачу, потому что v8
не был принят в этой настройке по какой-то причине.
Другая вещь, которую я сделал, - это отредактировал файл args.gn
напрямую и сохранил его.ПРАВИЛЬНЫЙ процесс должен запустить gn args out.gn\x64.release
, чтобы после сохранения и закрытия редактора он автоматически заново генерировал / обновлял файлы.Скорее всего, изменение файла само по себе не повлияет, и вы запутаетесь, потому что ninja
даже не увидит изменения.
Ошибка компоновщика в поврежденных файлах из-за того, что is_clang
имеет значение trueдефолт.Установка is_clang=false
исправляет эту ошибку.Это просто работает, я понятия не имею, почему;просто возьми его и иди ...;)
Правильный путь от корня, который у меня работал, таков:
python tools\dev\v8gen.py x64.release
python tools\dev\v8gen.py ia32.release
python tools\dev\v8gen.py x64.debug
python tools\dev\v8gen.py ia32.debug
Это выдаст файлы, которые можно скомпилировать в "v8\ out.gn "folder.
Подсказка: Запустите" python tools \ dev \ v8gen.py list ", чтобы увидеть список возможных конфигураций сборки.
Далее Iобновил аргументы сборки:
gn args out.gn\x64.release
Используя их:
is_debug = false <-(or true for debug builds)
target_cpu = "x64"
is_component_build = false
v8_static_library = true
use_custom_libcxx = false
use_custom_libcxx_for_host = false
v8_use_external_startup_data = false <-(or true to use the bin startup files)
is_clang = false
И снова для 32-битной версии (изменяя "x64"
выше на "x86"
конечно):
gn args out.gn\ia32.release
Затем повторил все вышеописанное для x64.debug
и ia32.debug
.
и скомпилировал их:
ninja -C out.gn/x64.debug v8
ninja -C out.gn/ia32.debug v8
ninja -C out.gn/x64.release v8
ninja -C out.gn/ia32.release v8
Visual Studio 2017 теперь строит и связывает мой проект сих снова сейчас (это был старый проект, который я воскресил).
Примечание. При связывании с отладочными версиями библиотек V8 может возникнуть ошибка, которая не соответствует _ITERATOR_DEBUG_LEVEL
.Чтобы это исправить, я просто зашел в настройки проекта C ++ (Confiuration Properties->C/C++->Preprocessor->Preprocesor Definitions
) и добавил ;_ITERATOR_DEBUG_LEVEL=0
, чтобы оно совпадало.