在Cygwin上编译G ++

时间:2013-08-04 15:17:24

标签: opencv g++ cygwin windows-7-x64

我正在跟随Naotoshi Seo tutorial进行OpenCV haartraining。我正在尝试编译他的脚本,该脚本应该将先前生成的* .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已复制到我运行代码的目录。

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

由于

1 个答案:

答案 0 :(得分: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都支持它。)

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