我需要在Windows中使用Qbs和QML的Qt应用程序中使用OpenCV
我正在使用随Qt 5.11安装的MVSC2017(64位)编译器
我有OpenCV 3.41(我必须链接到opencv_world341.lib)
我知道它在C:\ opencv \ build中,但是据我了解Qbs,我不能使用'C:'的路径(请告诉我我在这里是否错了)
我无法更改为(C | Q)make,因为我需要使用qbs和qml文件将该应用程序中的功能集成到更大的应用程序中
我尝试使用
import qbs
Project {
CppApplication {
Depends { name: "Qt.core" }
Depends { name: "Qt.quick" }
Depends { name: "OpenCV" }
cpp.cxxLanguageVersion: "c++11"
files: [
"main.cpp",
"qml.qrc",
]
}
CppApplication {
name: "OpenCV"
cpp.includePaths: ["../../../../../../opencv/build/include/"]
cpp.libraryPaths: ["../../../../../../opencv/build/x64/vc15/lib/"]
cpp.staticLibraries: "opencv_world341"
}
}
从包含qbs文件的目录开始,我用git bash确定了../
的数量
但是我得到了错误
C1083: Cannot open include file: 'opencv2/core.hpp': No such file or directory
我在Qbs文件中做错什么了吗?
我知道opencv安装的工作原理,因为我在Visual Studio Community 2017中使用了它进行测试
答案 0 :(得分:0)
我设法找到了解决方法,有两个问题,第一个是我正在Qtcreator中使用带有opencv_world341.lib文件的Debug版本,所以链接未正确完成,我需要为此,使用了opencv_world341d.lib文件,但我不想丢失发行版本,因此我添加了一个Properties块,以便静态库文件根据使用qbs.buildVariant属性的构建类型进行设置。
第二个问题是,将包含路径和库路径与正在构建的应用程序分开是行不通的,因此我将其放入CppApplication模块中,现在可以使用了
我这样更改了qbs文件:
import qbs
Project {
CppApplication {
Depends { name: "Qt.core" }
Depends { name: "Qt.quick" }
cpp.includePaths: ["../../../../../../opencv/build/include/"]
cpp.libraryPaths: [
"../../../../../../opencv/build/x64/vc15/lib/",
"../../../../../../opencv/build/x64/vc15/bin/"
]
cpp.cxxLanguageVersion: "c++11"
Properties
{
condition: qbs.buildVariant == "debug"
cpp.staticLibraries: ["opencv_world341d"]
}
Properties
{
condition: qbs.buildVariant == "release"
cpp.staticLibraries: "opencv_world341"
}
files: [
"main.cpp",
"qml.qrc",
]
}
}