win10下cmake编译opencv库问题

1.未配置Android NDK工具链目录

CMake Error at platforms/android/android.toolchain.cmake:451 (message):
Could not find neither Android NDK nor Android standalone toolchain.

You should either set an environment variable:
export ANDROID_NDK=~/my-android-ndk

根据提示配置ANDROID_NDK到环境变量PATH中,即可
例如:ANDROID_NDK = D:\android-ndk-r14b


2.ndk版本不匹配。

CMake Error at cmake/OpenCVUtils.cmake:235 (TRY_COMPILE):
Failed to configure test project build system.
Call Stack (most recent call first):
cmake/OpenCVUtils.cmake:296 (ocv_check_compiler_flag)
cmake/OpenCVCompilerOptions.cmake:69 (ocv_check_flag_support)
cmake/OpenCVCompilerOptions.cmake:93 (add_extra_compiler_option)
CMakeLists.txt:495 (include)

发现这个问题时,先是使用Android Studio中链接下载的最新ndk目录(版本是17)。会报错
之后,从https://developer.android.google.cn/ndk/downloads/ 中下载最新的16b,还是报错。

最后 查看源码文件夹下opencv-3.2.0\platforms\android\android.toolchain.cmake文件里有两行注释

Android CMake toolchain file, for use with the Android NDK r5-r10d
Requires cmake 2.6.3 or newer (2.8.9 or newer is recommended).

提示使用r5到r10版本的NDK(我去网上下只剩r10e的,下载来编译后就可以通过了。)


3.下载依赖文件超时,未下载成功。比对hash码不匹配

CMake Error at D:/opencv/opencv-3.2.0/cmake/OpenCVUtils.cmake:1043 (file):
file DOWNLOAD HASH mismatch

for file: [D:/opencv/opencv_contrib-3.2.0/modules/dnn/.download/bd5e3eed635a8d32e2b99658633815ef/v3.1.0/protobuf-cpp-3.1.0.tar.gz]  expected hash: [bd5e3eed635a8d32e2b99658633815ef]    actual hash: [d41d8cd98f00b204e9800998ecf8427e]         status: [28;"Timeout was reached"]

Call Stack (most recent call first):
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/download_protobuf.cmake:23 (ocv_download)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/download_protobuf.cmake:51 (ocv_protobuf_download)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:30 (include)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/CMakeLists.txt:35 (include)

CMake Error at D:/opencv/opencv-3.2.0/cmake/OpenCVUtils.cmake:1047 (message):
Failed to download v3.1.0/protobuf-cpp-3.1.0.tar.gz. Status=28;"Timeout
was reached"
Call Stack (most recent call first):
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/download_protobuf.cmake:23 (ocv_download)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/download_protobuf.cmake:51 (ocv_protobuf_download)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:30 (include)
D:/opencv/opencv_contrib-3.2.0/modules/dnn/CMakeLists.txt:35 (include)

根据提示D:/opencv/opencv_contrib-3.2.0/modules/dnn/cmake/download_protobuf.cmake:23找到该行信息可以看出,他需要libprotobuf这个库,并且需要下载到 ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/protobuf/sources 目录下,而下载地址就是 https://github.com/google/protobuf/releases ,于是我们只要手动下载3.1.0,然后把文件放到这个目录下即可。

更多相关文章

  1. Dealing with Asset Compression in Android Apps(避免asset目录
  2. Intent打开各种类型的文件
  3. Android生成PDF文件
  4. android保存Bitmap图片到指定文件夹示例
  5. android studio恢复误删文件
  6. Android SD 卡文件浏览器
  7. Android 获取文件的缩略图

随机推荐

  1. Dagger2 基础入门与使用
  2. android greenDao SQLite数据库操作工具
  3. 输入法显示和隐藏
  4. android sdk manager 快速下载sdk
  5. 关于SearchView的一些小细节
  6. AndroidManifest.xml:117: error: ERROR
  7. Android自定义View—小巧清爽的多节点进
  8. Settings设置页面的Preference使用方法
  9. Android游戏应用内悬浮球(不需要申请权限)
  10. Android(安卓)Flexboxlayout使用详解