1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

raylib-rs を Windows で動かしたので、まさかそんな人がいた時のためのメモ

Posted at

TL;DL.

  • rust, raylib-rs の他に依存バイナリ・ライブラリのインストールが必要
  • mingw-64, cmake, clang のインストールが必要。
    • clang は特に、ライブラリを利用するため LIBCLANG_PATH が通ることを確認する

この記事の前提

  • rust のビルドができること (cargo build)
  • raylib に関心を持ったこと
  • raylib-rs を使ってみようという関心を持ったこと

rust : 1.85.0
raylib-rs : 5.0
2025年1月時点での情報です。

手順

  1. w64devkit を使って、MinGW-64 を入れる
  2. CMake をインストールする
  3. Clang をインストールする
  4. raylib-rs を dependencies に追加し、Cargo build

私は raylib-rs をとりあえずビルドした結果、これらを入れないと動かないということが判明したのでここに記す。

この後で特に注意すべきは、いずれもPATH を通してコマンドラインで実行できるようにしないとだめ、ということだろう。方法についてはここでは述べない。各自頑張ってほしい。

w64devkit を使って、MinGW-64 を入れる

参照:raylib | Working on Windows

w64devkit をインストールし、PATHを通す。上記ページをよくよくよめば、VisualStudioでも同様にコンパイルできることがわかるのだが、環境を持っていないため私は w64devkit を用いた。

PATHを通すのを忘れないように。

cmake をインストールする

上記のみで動くかと思いきや、まだエラーは続いた。

  --- stderr
  thread 'main' panicked at C:\Users\saino\.cargo\registry\src\index.crates.io-6f17d22bba15001f\cmake-0.1.52\src/lib.rs:1115:5:

  failed to execute command: program not found
  is `cmake` not installed?

  build script failed, must exit now
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

ので、黙ってCMakeを入れる。

こちら → CMake

同じくPATHを通し忘れないように。

clang をインストールする

まだ出たエラー。

Unable to find libclang: "couldn't find any valid shared libraries matching: ['clang.dll', 'libclang.dll'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"

Clang をダウンロードし、入れる。

LIBCLANG_PATH を設定する必要がある。

実行を確認したRust側のコード

ここまでの準備が整えば、次のコードが動くはずである。

cargo.toml
[dependencies]
raylib = { version = "5.0" }
use raylib::prelude::*;

fn main() {
    let (mut rl, thread) = raylib::init()
        .size(640, 480)
        .title("Hello, World")
        .build();

    while !rl.window_should_close() {
        let mut d = rl.begin_drawing(&thread);

        d.clear_background(Color::WHITE);
        d.draw_text("Hello, world!", 12, 12, 20, Color::BLACK);
    }
}

もし、raylib, raylib-rs のバージョンが進み、依存関係が変化した場合は

上記のコードのみを動かしてみるのも一興だろう。そうすれば、何が要求されているのかがエラーメッセージとしてあらわれることと思う。

補足

ここまで我ながら偉そうに書いたが、多分他のエラーパターンもある。申し訳ないが個別の質問にはいたしかねます。

おわりに

raylibはSDLに似ている。

私はSDLが全盛期だったころを知っていて、高校生のときにゲームも作った。そもそもSDLってなに?という質問に対しては「老人の思い出話じゃよ」としか言わない。Unity使えUnreal使え、RustでもEnvyやGodotがあるでよ。当時(今でも)ガチで使っている人にはごめんなさい。raylib-rs はそれと同じ運命をたどるであろう。raylibもおそらくは。今現在ガチで使っている人にはごめんなさい。個人の感想ということで許してください。

SDL, raylibはいずれも、ゲーム開発を、ローレベルまで自分で完全制御できるライブラリ。アセット管理?音声合成?3DCG?OK、ドライバーとネジは用意しとくからさ、自分でやりなよ。そんなノリを感じる。マジの完全制御をしたい人にお勧め。なお、LowSpec, LowLevel環境でのゲーム開発という意味ではない。それはそれで別のライブラリがある。

そこまでやりこみたい人、昨今、いるの?いてほしい。仮にいたとして、この記事を踏み台にして高みへ上っていってほしい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?