Build OpenCV with Qt & Cuda via MSVC的第40小时
Build OpenCV with Qt & Cuda via MSVC的第40小时

Build OpenCV with Qt & Cuda via MSVC的第40小时

内容纲要

继续上次的尝试, 在取消生成并改变Qt指向后, 继续生成出现了更令人头疼的错误, 现在, 距离第一次尝试已经过去40小时, 而最后的两次生成, 每一次都需要五个小时以上……

God bless me!

第四次尝试

与第三次生成类似, 不过结果出现了语法错误, 经过检查, 由于VS对utf-8编码的支持不佳, 所以需要在C/C++命令行参数后加入/utf-8, 使其以utf8格式编码源代码.

解决utf8编码问题后, 又出现了另一个奇怪的问题——protoc版本过低.

按照常理, protoc应该是随着opencv的sources一起下载的, 为什么版本过低呢?

经过一番查找后发现, protoc居然指向了Anaconda中的Libraries… (大坑

经过考虑, 在github上下载了protobuf和protoc, 但由于不熟悉这两东西的配置, 在github上release中的32个文件里完美错开了正确版本, 使用_all而不是_cpp版本用cmake打算生成库供opencv使用.

protoc&protobuf

下载了all版本后, 发现这又是一个需要自己手动编译的东西… 哭晕… 一顿配置之后, MSVC很配合的报错了… 内心OS:这都能错?

各种LINK错误, 找不到函数定义和lib库, 在github issue里找了近一个小时, 最后发现应该下载_cpp版本进行编译, 果然, 编译成功, 得到protoc.exe和几个lib

而opencv需要指定protobuf的src文件. protoc是cmake在pre-compile是就会在自动检索好的.

第五次尝试

完成protoc的path设定后, 重新生成, 几个小时后出现报错. LINK错误, 敏锐的察觉到opencv_world和anaconda下的protoc有冲突, 没办法只好删除anaconda…

除此之外, 我发现opencv_extra_modules选项所需要的opencv_contribs模块需要和当前版本对应, 而不能是master对master, 我使用的是opencv4.40, 所以又重新下载了4.40版的opencv_contribs来( 按照常理, master就应该是4.40, 可那位测试过所有可能性的大侠发现就算master对master都不行…)

这里, 在此严重吐槽墙的恶心, 一个9m的zip, 花了我半个小时才下载好… 期间什么办法都用了, 下载仍然比拨号上网还慢, 可惜了我的500M宽带.

第六次尝试——快要成功了?

删除Anaconda后, everything goes pretty well dispite the cost of time. 这次7个小时还没build 60%…

经过浏览cmake文件, 发现居然把所有cuda架构全部编译了一遍……

我差点七窍流血, 从6系显卡到20系显卡再到Tesla和Quadro, 近10个时代的cuda全部编译了一遍, 难怪一直卡在cuda编译这里.

没办法只好改变cuda arch重新生成项目…

第七次尝试…

希望这次能够build成功吧…

不然就到第三天了…

发表评论

您的电子邮箱地址不会被公开。