【问题标题】:install opencv 3.4.1 and Qt 5.10 with CMAKE使用 CMAKE 安装 opencv 3.4.1 和 Qt 5.10
【发布时间】:2018-09-02 16:55:22
【问题描述】:

我安装了 Qt 5.10 最新版本和 opencv3.4.1,我无法在这个版本的 Qt 中安装库,Cmake 可以有人帮我在我的 Windows 10 64 位上做吗? 我也试过这个视频 https://www.youtube.com/watch?v=ZOSu-2Oju-A 在 cmd 步骤中我有这个(图片在这个链接中)

也在这个链接中((https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows))我仔细地做了所有的步骤,但是我没有在opencv-build中找到文件夹bin,我的操作系统是windows 10 64位谢谢你的帮助。

【问题讨论】:

  • I couldn't install the library - 究竟是什么问题?您是否遇到过 CMake 错误/编译器错误? edit您的问题帖子,并附上您的问题描述。
  • 除了上面的评论,你正在使用的操作系统是什么?
  • 是的,我知道我必须创建这个文件夹,但对不起,我的意思是在 cmd 步骤之后该文件夹仍然是空的,因为它没有完成到 100% 并且在帖子中的图片中停止在 29% 清除为什么它不完整??
  • 表示你的mingw版本默认不支持c++11。
  • 请问我怎么知道什么是正确的版本?根据我的操作系统?如果它是 64 位还是 32 位?还是cmake的版本?

标签: qt opencv cmake opencv3.0 qt5.10


【解决方案1】:

注意:我的回答更多基于[SO]: openCV mingw-32 error in cmd(发布的.pdf中提到的工具版本)

1。初步考虑

一开始,我尝试使用我机器上已有的东西来构建它(Win 10):

  • CMake 3.6.4(由 Android Studio 捆绑 - 我几个月没有更新 BTW),cmdline - 因为没有 GUI
  • MinGW7.2.0(我在我的机器上构建用于不同的任务)
    • g++ 7.2.0
  • OpenCV 3.4.2(下载[GitHub]: opencv/opencv - opencv-3.4.2.zip,专门针对这个任务)


构建过程通过了这个阶段(嗯,它在这个点以下的某个地方失败了,我没有检查确切的原因)。 无论如何,我认为我使用的构建环境和建议的环境太远了,所以我:

  • 已下载 CMake 3.6.3 Win x64 包(包含 cmake-gui - 作为 cmdline 可以一种痛苦,尤其是对于那些不习惯的人)
  • 使用 MinGW 5.3.0(我的 Qt 安装的一部分)
    • g++ 5.3.0

其核心问题(如 cmets 中所述,或 Google 指出错误)是 g++ 编译器不使用 C++ 11 标准(protobuf 源代码需要它)。
所以,我做了一个小测试:将错误代码粘贴到一个文件中(并添加了一个虚拟 main),并在 2 个 MinGW 安装中进行了尝试。

code00.cpp

template <typename char_type>
bool null_or_empty(const char_type *s) {
    return (s == nullptr) || (*s == 0);
}


int main() {
    return 0;
}

输出

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q049459395]> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[prompt]> dir /b
build
build.bat
cmake-gui.exe - Shortcut.lnk
code.cpp
src

[prompt]> set _PATH=%PATH%

[prompt]> set PATH=%_PATH%;c:\Install\x64\MinGW32\MinGW32\7.2.0-posix-seh-rt_v5-rev1\mingw64\bin

[prompt]> "c:\Install\x64\MinGW32\MinGW32\7.2.0-posix-seh-rt_v5-rev1\mingw64\bin\g++" code.cpp

[prompt]> "c:\Install\x64\MinGW32\MinGW32\7.2.0-posix-seh-rt_v5-rev1\mingw64\bin\g++" --version
g++ (x86_64-posix-seh-rev1, Built by MinGW-W64 project) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


[prompt]> dir /b
a.exe
build
build.bat
cmake-gui.exe - Shortcut.lnk
code.cpp
src

[prompt]> del /q a.exe

[prompt]> set PATH=%_PATH%;c:\Install\Qt\Qt\Tools\mingw530_32\bin

[prompt]> "c:\Install\Qt\Qt\Tools\mingw530_32\bin\g++" code.cpp
code.cpp: In function 'bool null_or_empty(const char_type*)':
code.cpp:3:17: error: 'nullptr' was not declared in this scope
     return (s == nullptr) || (*s == 0);
                  ^

[prompt]> "c:\Install\Qt\Qt\Tools\mingw530_32\bin\g++" --version
g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


[prompt]> "c:\Install\Qt\Qt\Tools\mingw530_32\bin\g++" code.cpp -std=c++0x

[prompt]> 

正如所见,旧的 g++ 需要-std=c++0x 明确

按照构建步骤,我得到了与下图相同的错误(我直接在 protobuf 的目录中启动了 mingw32-make,以跳过所有其他在它之前构建的东西):

2。解决方案

两者都是在 cmake-gui 级别完成的。设置路径后:

  • 点击“配置
  • 进行所需的变量更改
  • 点击“生成
  • 从控制台启动 mingw32-make,在构建目录中

注意事项

  • 由于我离成为 CMake 专家还很遥远,所以在此之前,我会清空构建目录以确保之前的构建中没有任何内容(当然缺点是所有再次完成,通常需要很长时间)

  • 由于我没有启用并行构建,我没有等待完整构建完成(因为它需要很长时间),而是检查它是否通过了这一点

2.1 强制C++11标准

点击“添加条目”并设置[CMake 3.1]: CXX_STANDARD:

在下面,请注意构建通过了之前失败的点:

2.2 跳过 Protobuf 构建

注意事项

  • 在发布的电影中,没有尝试构建 Protobuf(可能它不在捆绑包中?)这就是没有弹出此错误的原因
  • 我不知道最终构建中不会提供哪些功能,因为我不知道 Protobuf 使用的是什么
  • 我认为这更像是一种解决方法

搜索 Protobuf 相关变量,并取消选中 BUILDWITH 组中的任何变量( 蓝色线):

效果再次如下 - Protobuf 构建不再发生(它就在 libIlmImf 之后):

【讨论】:

    猜你喜欢
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2017-12-04
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多