build.ninja не найден при сборке Dart SDK
Я точно следовал вики, но когда я пытаюсь построить, это не получается:
$ gclient sync
... # A lot of syncing here
Running hooks: 100% (14/14), done.
$ cd sdk/
$ ./tools/build.py --mode release --arch x64 create_sdk
ninja -C out/ReleaseX64 create_sdk
ninja: error: loading 'build.ninja': No such file or directory
BUILD FAILED
$ ls out/ReleaseX64
args.gn build.ninja build.ninja.d dart-sdk obj toolchain.ninja
1 ответ
Использование /usr/bin/ninja
вместо того, что идет с depot_tools.
По крайней мере, в Windows эта проблема вызвана тем, что возникла проблема (вероятно, связанная с Visual Studio) во время работы build.py
. Поскольку сценарий был прерван,build.ninja
не создается. При бегеbuild.py
снова после этого он не пытается создать файлы сборки (потому что выходная папка уже создана) и просто терпит неудачу, если не находит build.ninja
.
На Github есть проблема по этому поводу. Для пользователей Windows я предлагаю выполнить следующие шаги для установки Visual Studio:
- Скачайте Visual Studio 2019 Community (бесплатно) и установите
- Откройте Visual Studio и в меню выберите Инструменты -> Получить инструменты и компоненты. Выберите "Разработка настольных компьютеров с C++" на вкладке "Рабочие нагрузки" (вкладка по умолчанию) и установите.
- Перейдите в Windows Apps & Features (где вы удаляете программы), найдите "Windows Software Development Kit" и нажмите "Изменить". Нажмите "Изменить", выберите "Отладчик" и продолжайте.
Я также установил переменную среды GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community, но я думаю, что в этом нет необходимости, потому что путь автоматически определяется сценариями (если он установлен в пути по умолчанию).
После этого выполните остальные шаги в вики. Как правило, установите инструменты депо, выполните "fetch dart" в новой папке "dart-sdk", затем запустите "gclient sync" из папки. Затем из "dart-sdk/sdk" запуститеpython ./tools/build.py --mode release --arch x64 create_sdk
Для меня удаление каталога xcodebuild и повторная синхронизация работали (в каталоге sdk)
rm -rf xcodebuild
gclient sync