Skip to content

Failed to parse output from vcpkg on windows #669

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
clouds56 opened this issue Apr 26, 2025 · 2 comments
Open

Failed to parse output from vcpkg on windows #669

clouds56 opened this issue Apr 26, 2025 · 2 comments

Comments

@clouds56
Copy link

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
Copy link
Author

Maybe we should use winsplit-rs according to comex/rust-shlex#20

@twistedfall
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants