我想仅使用 CLI 在 Windows 上编译 OpenCV C/C++ (MSYS2) 程序。GNU Bash 执行此操作的方法是(在 MSYS2 MINGW64 Shell 上运行良好):
g++ main.cc -o main `pkg-config --cflags --libs opencv4`
Run Code Online (Sandbox Code Playgroud)
Bash 完美地将反引号识别为子表达式,但 PowerShell 却不能:
> g++ main.cc -o main `pkg-config --cflags --libs opencv4`
g++.exe: error: unrecognized command-line option '--cflags'
g++.exe: error: unrecognized command-line option '--libs'
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,PowerShell 上的等效项是
g++ main.cc -o main $(pkg-config --cflags --libs opencv4)
Run Code Online (Sandbox Code Playgroud)
尽管$(pkg-config --cflags --libs opencv4) 这是在 PowerShell 中编写子表达式的正确方法,因为echo命令显示它会产生正确的输出(在这种情况下,编译器包含我需要的链接器标志):
> echo $(pkg-config --cflags --libs opencv4)
-IC:/msys64/mingw64/bin/../include/opencv4 -LC:/msys64/mingw64/bin/../lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco …Run Code Online (Sandbox Code Playgroud)