技術系の記事は Qiita とか Zenn に投稿しようかとも思ったけどここに載せます。お金も払ってるし。
表題の件、躓いて苦労したので記録として残してきます。
ウェブ系の開発は windows なら WSL2 とか使えよって話なのかもしれないですが最近は Windows Terminal も標準になったしそのまま開発環境にするか!となったのですがさっそく色々躓いています。
というか Rust, Cargo のインストール自体が windows だと visual studio community 必須です。私は 2019 と 2022 両方インストールしました。
MySQL のクライアントインストールするのに 2019 が必要だったりします。
というか初めから winget 使えばよかったと後悔しています。
とはいえ…このことも記事にするのは無意味ではないでしょう。
diesel_cli を Rust, Cargo インストール済みの状態で以下のコマンドを実行してインストールします。
cargo install diesel_cli --no-default-features --features mysql
そのままだと必要なライブラリがなくてビルドに失敗するかと思います。
環境によって失敗する理由は異なるかもですが私の場合はビルドに必要な mysqlclient.lib
がないと言われ失敗していました。
こちらのページ からMySQL のインストーラーをダウンロードして MySQL をインストールするとちゃんと mysqlclient.lib
も同梱されるのですが diesel_cli
が使用しているバージョンではないためビルドに失敗した模様でした。
ビルドに成功させるには以下のリンク先にあるパッケージをインストールする必要があります。
C言語でビルドされた mysqlclient.lib
が必要なのですね。
適当な場所へインストールして環境変数へパスを設定した後上記インストールのコマンドを実行したらビルドに成功しました。
$env:MYSQLCLIENT_LIB_DIR = "C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14"
- インストール先のパスは適宜読み替えてください
- 空白を含むパスの場合、パワーシェルで環境変数をセットしてもパスを正しく解釈できず失敗します。その場合は画像のようにシステム詳細で環境変数をセットすると良いです
追記
cli だけではなく本体のビルドにもライブラリの場所を教える必要があります。以下の環境変数へパスを設定する必要があると思います。
$env:RUSTFLAGS = '-L ""C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14""'
- インストール先のパスは適宜読み替えてください