opencv-rust
opencv-rust copied to clipboard
Failed to parse output from vcpkg on windows
Before reporting an issue please first check the troubleshooting guide. If the issue you're encountering is not solved thereby please state the following in your bugreport:
- Operating system: Windows 11 x64
- The way you installed OpenCV:
vcpkg install opencv4 - OpenCV version 4.11.0
- rustc version (
rustc --version) rustc 1.85.0 (4d91de4e4 2025-02-17) - Attach the full output of the following command from your project directory:
[opencv 0.94.4] === Detected probe priority boost based on environment vars: pkg_config: false, cmake: false, vcpkg: true
[opencv 0.94.4] === Probing the OpenCV library in the following order: environment, vcpkg_cmake, vcpkg, pkg_config, cmake
[opencv 0.94.4] === Can't probe using: environment, continuing with other methods because: Some environment variables are missing
Fresh jsonschema v0.30.0
[opencv 0.94.4] === Probing OpenCV library using vcpkg_cmake
[opencv 0.94.4] === Discovered vcpkg root: C:\opt\vcpkg
[opencv 0.94.4] === Probing OpenCV library using cmake with toolchain: C:\opt\vcpkg\scripts/buildsystems/vcpkg.cmake
[opencv 0.94.4] === cmake ninja probe command: "cmake" "-S" "C:\\Users\\clouds\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\opencv-0.94.4\\cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_TOOLCHAIN_FILE=C:\\opt\\vcpkg\\scripts/buildsystems/vcpkg.cmake" "-DCMAKE_BUILD_TYPE=Debug" "-G" "Ninja"
[opencv 0.94.4] === Extracting build arguments from: C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_highgui4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_ml4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_objdetect4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_photo4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_stitching4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_video4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_videoio4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_imgcodecs4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_calib3d4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_dnn4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_features2d4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_flann4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_imgproc4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_core4d.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
[opencv 0.94.4]
[opencv 0.94.4] === Successfully probed using: vcpkg_cmake
[opencv 0.94.4] === OpenCV library configuration: Library {
[opencv 0.94.4] include_paths: [
[opencv 0.94.4] "C:/opt/vcpkg/installed/x64-windows/include/opencv4",
[opencv 0.94.4] ],
[opencv 0.94.4] version: Version {
[opencv 0.94.4] major: 4,
[opencv 0.94.4] minor: 11,
[opencv 0.94.4] patch: 0,
[opencv 0.94.4] },
[opencv 0.94.4] enabled_features: [
[opencv 0.94.4] "directx",
[opencv 0.94.4] "directx_nv12",
[opencv 0.94.4] "d3d11",
[opencv 0.94.4] "d3d10",
[opencv 0.94.4] "d3d9",
[opencv 0.94.4] "jpeg",
[opencv 0.94.4] "png",
[opencv 0.94.4] "tiff",
[opencv 0.94.4] "quirc",
[opencv 0.94.4] ],
[opencv 0.94.4] cargo_metadata: [
[opencv 0.94.4] "cargo::rustc-link-search=C:",
[opencv 0.94.4] "cargo::rustc-link-search=",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_highgui4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_ml4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_objdetect4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_photo4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_stitching4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_video4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_videoio4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_imgcodecs4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_calib3d4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_dnn4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_features2d4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_flann4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_imgproc4d",
[opencv 0.94.4] "cargo::rustc-link-lib=optvcpkginstalledx64-windowsdebuglibopencv_core4d",
[opencv 0.94.4] "cargo::rustc-link-lib=kernel32",
[opencv 0.94.4] "cargo::rustc-link-lib=user32",
[opencv 0.94.4] "cargo::rustc-link-lib=gdi32",
[opencv 0.94.4] "cargo::rustc-link-lib=winspool",
[opencv 0.94.4] "cargo::rustc-link-lib=shell32",
[opencv 0.94.4] "cargo::rustc-link-lib=ole32",
[opencv 0.94.4] "cargo::rustc-link-lib=oleaut32",
[opencv 0.94.4] "cargo::rustc-link-lib=uuid",
[opencv 0.94.4] "cargo::rustc-link-lib=comdlg32",
[opencv 0.94.4] "cargo::rustc-link-lib=advapi32",
[opencv 0.94.4] ],
[opencv 0.94.4] }
I see it successfully found build arguments, but seems parse failed.
I think shlex cannot handle windows path correctly,
const LINE: &str = r#"C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_highgui4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_ml4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_objdetect4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_photo4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_stitching4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_video4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_videoio4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_imgcodecs4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_calib3d4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_dnn4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_features2d4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_flann4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_imgproc4d.lib C:\opt\vcpkg\installed\x64-windows\debug\lib\opencv_core4d.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib"#;
fn main() {
shlex::Shlex::new(LINE).into_iter().for_each(
|s| println!("{}", s),
);
}
would output
C:optvcpkginstalledx64-windowsdebuglibopencv_highgui4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_ml4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_objdetect4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_photo4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_stitching4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_video4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_videoio4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_imgcodecs4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_calib3d4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_dnn4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_features2d4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_flann4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_imgproc4d.lib
C:optvcpkginstalledx64-windowsdebuglibopencv_core4d.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Maybe we should use winsplit-rs according to https://github.com/comex/rust-shlex/issues/20
Good catch! Thank you for the investigation, I’ll try to provide the fix soon!