備忘録的な何か

忘れそうなことを書いていく予定

RustでOpenCV使う

概要

Windowsでvcpkgを使ってOpenCVをRustから使えるようにする。

環境

OS: Windows 11 [Version 10.0.22621.1105]
rustc: 1.63.0

手順

基本的にはcrate.ioのopencvクレートのreadmeを読んで実行することになると思うが、 トラブルシューティングに書かれているようにハマるポイントがあるので回避する必要がある。

https://crates.io/crates/opencv

私が実行した手順は以下の通り。

  • vcpkgを入れる。vcpkgのリポジトリreadme.mdのQuick Start: Windowsの箇所を読んでその通りに実行

https://github.com/microsoft/vcpkg

  • vcpkgでllvm, opencv4を入れる。tripletの指定をopencvはx64-windows-static-mdにしておくと静的リンクできるようになる。
vcpkg install llvm:x64-windows opencv4[contrib,nonfree]: x64-windows-static-md
  • OpenCV周りの環境変数を指定しておく(永続ならsetx)。なお今回はvcpkgのgit clone先をEドライブ直下としている。
set VCPKG_ROOT=E:\vcpkg
set LIBCLANG_PATH=E:\vcpkg\packages\llvm_x64-windows\bin
set LLVM_CONFIG_PATH=E:\vcpkg\packages\llvm_x64-windows\tools\llvm
set CLANG_PATH=E:\vcpkg\packages\llvm_x64-windows\tools\llvm\clang.exe

以上で完了。
RustのOpenCVクレートをビルドするときにVCPKG_ROOTの指定があれば、
OpenCVの必要なinclude, bin周りを探してくれるのでVCPKG_ROOTの指定があれば良い。
後はLLVMの上記3つは手動で設定すれば通った。