日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

Cargo でグローバルにライブラリサーチパスを追加する方法

Cargo で C ネイティブライブラリをリンクさせる為に 配置されているパスを Cargo に明示的に指示したい場合どうするか。


確認環境*1

  • Win7 64bit
  • Rust Stable 1.8.0 GNU ABI

プロジェクト単位での設定方法

探すと Qiita でこんな記事が見つかった。

qiita.com

グローバルに設定する方法

今回自分がやりたいのはこちら。

先に紹介した方法でもいいんだけど特に自分のような Windows ユーザだと MSVC/MinGW/Cygwin とかで配置する場所の慣習が変わってくるのと ほぼマルチユーザで使う事はないのでライブラリをインストールしたら プロジェクト単位すら面倒でグローバルに設定したくなる。

で Cargo のドキュメント探してたらあった。

Cargo は設定ファイルを記述する事が可能らしく *2cargo runcargo build 実行時はまずその設定を読み込んでくれるらしい。

自分は %HOME% を設定してるので、%HOME%.cargo\config ファイルを配置。 そしてライブラリサーチパスの設定を以下のように書いた。 *3

[target.native]
rustc-link-search = ["C:/path/to/lib"]

["C:/path/to/lib"] は自分がリンクさせたいライブラリが存在するパスを指定する事。

参考

一度このドキュメントはどこかでちゃんと読み込んでおきたいかな。 Tomlファイル自体の形式は分かりやすいんだけど何をどう設定できるのかがあんまり把握できてないし。


*1:しつこいようだけど Rust は情報追っかけてると 6week リリースするとか更新早そうなのと今はともかくこれまでは破壊的変更が何度もされてきたみたいなのでRust 関連記事は今後も極力確認した環境をまず書いていこうと思う

*2:英語だけどパスの一覧がリストにあるので場所は分かると思う

*3:例にあるようにパス区切りは / でも行ける。Windows区切りだと \\ と書く必要があり少し見づらくなるのでRust の場合は / で行った方が良さそう。