opencv-rust icon indicating copy to clipboard operation
opencv-rust copied to clipboard

Failed to parse output from vcpkg on windows

Open clouds56 opened this issue 10 months ago • 2 comments

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:

  1. Operating system: Windows 11 x64
  2. The way you installed OpenCV: vcpkg install opencv4
  3. OpenCV version 4.11.0
  4. rustc version (rustc --version) rustc 1.85.0 (4d91de4e4 2025-02-17)
  5. 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

clouds56 avatar Apr 26 '25 12:04 clouds56

Maybe we should use winsplit-rs according to https://github.com/comex/rust-shlex/issues/20

clouds56 avatar Apr 26 '25 12:04 clouds56

Good catch! Thank you for the investigation, I’ll try to provide the fix soon!

twistedfall avatar Apr 26 '25 14:04 twistedfall