我正在跟随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已复制到我运行代码的目录。
希望有人能帮我解决问题。
由于
答案 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都支持它。)
如果您使用的教程显示该命令的单引号,您应该让作者知道。