Cargo でグローバルにライブラリサーチパスを追加する方法
Cargo で C ネイティブライブラリをリンクさせる為に 配置されているパスを Cargo に明示的に指示したい場合どうするか。
確認環境*1
プロジェクト単位での設定方法
探すと Qiita でこんな記事が見つかった。
グローバルに設定する方法
今回自分がやりたいのはこちら。
先に紹介した方法でもいいんだけど特に自分のような Windows ユーザだと MSVC/MinGW/Cygwin とかで配置する場所の慣習が変わってくるのと ほぼマルチユーザで使う事はないのでライブラリをインストールしたら プロジェクト単位すら面倒でグローバルに設定したくなる。
で Cargo のドキュメント探してたらあった。
Cargo は設定ファイルを記述する事が可能らしく
*2、
cargo run
や cargo build
実行時はまずその設定を読み込んでくれるらしい。
自分は %HOME% を設定してるので、%HOME%.cargo\config ファイルを配置。 そしてライブラリサーチパスの設定を以下のように書いた。 *3
[target.native] rustc-link-search = ["C:/path/to/lib"]
["C:/path/to/lib"]
は自分がリンクさせたいライブラリが存在するパスを指定する事。
参考
- http://doc.crates.io/build-script.html#overriding-build-scripts
- (推測) リンク先のサンプルは 64bit linux で foo ライブラリをリンクする際のパス指定方法だと思われる
一度このドキュメントはどこかでちゃんと読み込んでおきたいかな。 Tomlファイル自体の形式は分かりやすいんだけど何をどう設定できるのかがあんまり把握できてないし。