小编fla*_*478的帖子

Powershell 子表达式无法识别“pkg-config --cflags --libs opencv4”命令

我想仅使用 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)

c++ bash powershell opencv

5
推荐指数
1
解决办法
212
查看次数

标签 统计

bash ×1

c++ ×1

opencv ×1

powershell ×1