🕊️

VscodeでBevyの動的リンクを使ったプロジェクトの作成

2024/05/29に公開

Bevyコンパイルの高速化

リンカには既存ものより高速なruat-lldを使用.
Dynamic_linking(動的にリンク)を使用.

本記事での対象環境

OS:Windows11
Editor:Visualstudio Code
Bevy:0.13.2
Debugger:CodeLLDB

ターミナルでの作業

rust-lldの導入

rustのリンカをより高速な物へと変えます.Linux macOSではより高速なmoldがありますが,Windows版はまだ未実装な為rust-lldを使用.

LLVMのツールを自動的に使用するためのユーティリティをインストール

cargo install -f cargo-binutils

rust-lldをインストール

rustup component add llvm-tools

ワークスペース内での作業

プロジェクトの設定

Rustでプロジェクトの作成をした際のディレクトリ.

.
├── src
│   └── main.rs
└── Cargo.toml

bevyでdynamic_linkingを有効にし,その他の最適化オプションを設定します。
以下をCargo.tomlに設定.

[package]
name = "bevy_project"//任意のプロジェクト名
version = "0.0.0"
edition = "2021"
[dependencies]
bevy = { version = "*", features = ["dynamic_linking"] }
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 3

そして、リンカをrust-lldと指定するために、srcやcargoと同じディレクトリに".cargo"というディレクトリを作成し、その中に"config.toml"といファイルを追加。

.
├── .cargo
│   └── config.toml
├── src
│   └── main.rs
└── Cargo.toml

config.tomlの設定

使用するリンカとそのオプションを設定

"config.toml"の内容

[target.x86_64-pc-windows-msvc]
linker = "rust-lld.exe"

launch.jsonの設定

vscodeではCodeLLDBの拡張機能があり,それを導入すればデフォルト設定で[F5]キーでデバッグの実行が行える.デバッグの構成を作成すると".vscode"というディレクトリとその内部にlaunch.jsonが生成される.それらを以下のものへと変更する.

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "cargo": {
                "args": [
                    "build",
                    "--bin=${workspaceFolderBasename}",
                    "--package=${workspaceFolderBasename}",
                    "--features=bevy/dynamic_linking"
                ],
                "filter": {
                    "name": "bevy_project",
                    "kind": "bin"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}",
            "env": {
                "BEVY_ASSET_ROOT": "${workspaceFolder}",
                "PATH": "${env:USERPROFILE}/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin;${workspaceFolder}/target/debug/deps;${env:PATH}",
            },
        }
    ]
}

最後に

Bevyの公式ブックでも手順は書いていますが,内容が散らばっているためわかりにくいという声が多かったため記事を書いてみました.上記の方法でもできなかった方は気軽にご連絡ください.
また,これからもBevyによる初心者講座記事をちらちら上げていきたいと思います.

もし上記のやり方でうまくいかない場合以下に僕の作成したBevyの初期テンプレートを作成していますので以下を参照してみてください.
https://github.com/u7f8au7fbd/bevy_project

Discussion