Как запустить исполняемый файл с помощью Rust и Amethyst - PullRequest
0 голосов
/ 24 апреля 2020

Итак, я следовал учебнику по Аметист-Понгу и сейчас создаю небольшую программу Game of Life. Он работает нормально, если я запускаю его с cargo run, но если я делаю cargo build, а затем запускаю

$ .\target\debug\game_of_life.exe

, я получаю сообщение об ошибке:

Error: Error { inner: Inner { source: None, backtrace: None, error: ConfigError(File(Os { code: 3, kind: NotFound, message: "The system cannot find the path specified." })) } }

Если это еще не было ясно Я на Windows 10. Я также создал пустой проект ржавчины и попытался запустить исполняемый файл этого, и он работал нормально:

$ cargo new temp
$ cd temp
$ cargo build
$ .\target\debug\temp.exe
Hello, world!

шагов для воспроизведения (должен быть установлен автомобиль go и vulkan) :

$ cargo install amethyst_tools
$ amethyst new temp
$ cd temp
$ cargo build
$ .\target\debug\temp.exe
Error: Error { inner: Inner { source: None, backtrace: None, error: ConfigError(File(Os { code: 3, kind: NotFound, message: "The system cannot find the path specified." })) } }

обратите внимание, что это:

$ amethyst new temp
$ cd temp
$ cargo run

отлично работает

Версии:

$ amethyst --version
Amethyst CLI 0.10.0
$ cargo --version
cargo 1.43.0 (3532cf738 2020-03-17)

Любые идеи или дополнительная информация, которую я должен предоставить?

1 Ответ

0 голосов
/ 24 апреля 2020

Ваша основная функция вызывает application_root_dir , который является частью Amethyst. Определение application_root_dir показывает, что оно использует либо CARGO_MANIFEST_DIR, либо местоположение вашего исполняемого файла в качестве пути root (который позже используется для поиска ресурсов и конфигурации). Когда вы вызываете cargo run, он устанавливает CARGO_MANIFEST_DIR в каталог текущего построенного ящика Car go .toml, тогда как, если вы вызываете двоичный файл напрямую, CARGO_MANIFEST_DIR вообще не устанавливается (поэтому он попытается использовать .\target\debug в качестве базового пути для поиска конфигов / ресурсов).

Вы можете либо скопировать двоичный файл в папку вашего Cargo.toml, либо вручную установить CARGO_MANIFEST_DIR, и тогда вы сможете выполнить Ваш двоичный файл напрямую.

...