0

我正在关注 OpenCV haartraining 的 Naotoshi Seo教程。我正在尝试编译他的脚本,该脚本应该将以前生成的 *.vec 文件合并为一个。

我的工作环境是 Windows 7 x64 和 Cygwin

当我运行代码时:

$ g++ 'pkg-config --libs --cflags opencv' -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp

我得到错误:

 $ g++: error: pkg-config --libs --cflags opencv: No such file or directory

请注意,文件 mergevec.cpp 已复制到我运行代码的目录中。

希望有人能够帮助我解决我的问题。

谢谢

4

1 回答 1

0

您需要使用反引号,而不是单引号。

这个:

g++ 'pkg-config --libs --cflags opencv' -I. -o mergevec \
    mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp \
    cvhaarclassifier.cpp cvhaartraining.cpp

'pkg-config --libs --cflags opencv'作为文字字符串参数(不带引号)传递给命令g++。这个:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec \
    mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp \
    cvhaarclassifier.cpp cvhaartraining.cpp

执行命令pkg-config --libs --cflags opencv并将其输出作为一个或多个参数传递给g++,这就是您想要的。你也可以这样写:

g++ $(pkg-config --libs --cflags opencv) -I. -o mergevec \
    mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp \
    cvhaarclassifier.cpp cvhaartraining.cpp

如果您的 shell 支持它(csh、tcsh 和旧版本的 sh 不支持;大多数其他现代 shell 支持)。

如果您使用的教程显示该命令的单引号,您可能应该让作者知道。

于 2013-08-04T21:55:06.190 回答