WSL 上に構築した Rust 環境から Windows 向けにクロスビルドする
こんにちは、 @kz_morita です。
今回は、WSL 上で Rust の開発を行い、Windows 上でそれを実行するためクロスビルドするための方法についてまとめます。
対象のソースコード 今回は、WindowsAPI を Rust から叩くようなアプリケーションをWSL 上で実装して、Windows 向けにクロスビルドして動かしてみます。
具体的には、MessageBox API を叩いて Windows 上で MessageBox を表示してみます。 WindowsAPI を叩くために windows crate を使用します。
ソースコードには、 Microsoft公式のこちら に記載されているものを利用しています。
以下 Cargo.toml です。
Cargo.toml [package] name = "win_message_box" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] [dependencies.windows] version = "0.43.0" features = [ "Win32_Foundation", "Win32_UI_WindowsAndMessaging" ] 以下ソースコードです。
src/main.rs usewindows::{core::*,Win32::UI::WindowsAndMessaging::*};fn main(){unsafe{MessageBoxA(None,s!("Ansi"),s!("World"),MB_OK);MessageBoxW(None,w!("Wide"),w!("World"),MB_OK);}}クロスビルドをする クロスビルドために以下の cross crate を Install して、cross コマンドを使えるようにします。