在WIN10上不用CMake和MinGW編譯Android版本的OpenCV


構建編譯項目

不需要安裝CMake,MinGW等額外工具。只需要Android NDK和OpenCV源碼
在WIN10上使用cmd窗口命令編譯OpenCV步驟,操作版本為4.0.1:

  1. 在OpenCV根目錄下面新建一個文件夾,比如叫做build_cmd。因為OpenCV要求CMAKE_BINARY_DIR不和CMAKE_SOURCE_DIR是同一個文件夾,所以不能在根目錄下直接執行cmake
  2. cd到build_cmd
  3. 執行如下命令,路徑對應修改
E:\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe ^
-DCMAKE_TOOLCHAIN_FILE=E:\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake ^
-DANDROID_NDK=E:\Android\Sdk\ndk-bundle ^
-DANDROID_ABI="arm64-v8a" ^
-DANDROID_SDK=E:\Android\Sdk ^
-DWITH_TBB=ON ^
-DCPU_BASELINE=NEON ^
-DCPU_DISPATCH=NEON ^
-DOPENCV_ENABLE_NONFREE=ON ^
-DBUILD_ANDROID_EXAMPLES=OFF ^
-DBUILD_ANDROID_PROJECTS=OFF ^
-DINSTALL_ANDROID_EXAMPLES=OFF ^
-DANDROID_NATIVE_API_LEVEL=21 ^
-DOPENCV_EXTRA_MODULES_PATH=F:\opencv_401\opencv_contrib_401\modules ^
-DCMAKE_CXX_FLAGS:STRING=-O3 ^
-DCMAKE_C_FLAGS:STRING=-O3 ^
-DCMAKE_BUILD_TYPE:STRING=Release ^
-DBUILD_JAVA=OFF ^
-DBUILD_ZLIB:BOOL=ON ^
-DBUILD_opencv_world=ON ^
-DBUILD_FAT_JAVA_LIB:BOOL=OFF ^
-DBUILD_PERF_TESTS:BOOL=OFF ^
-DBUILD_TESTS:BOOL=OFF ^
-G "Ninja" ^
-DCMAKE_MAKE_PROGRAM=E:\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe ../

要點:

  1. E:\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe,這個是直接使用Android SDK中自帶的cmake,沒必要重新下cmake程序
  2. -DCMAKE_TOOLCHAIN_FILE=E:\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake,這個需要指定為Android SDK中的ndk中自帶的文件,否則,可能會遇到NDK版本不對或者找不到toolchain文件的錯誤。
  3. -DANDROID_ABI="arm64-v8a",這個千萬不能忘記
  4. -G "Ninja":最近的版本開始,Android SDK自帶的cmake已經沒有之前的Android - Gradle這個生成方式了,所以轉而選擇Ninja。不要去選擇MinGW Makefiles之類的,因為那樣的話,需要重新下載其他,而andoird sdk中自帶Ninja編譯
  5. -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_ANDROID_PROJECTS=OFF -DINSTALL_ANDROID_EXAMPLES=OFF,不用編譯examples,浪費時間。同時可以避免CMake Error at samples/android/15-puzzle/CMakeLists.txt:3 (add_android_project): Unknown CMake command "add_android_project".錯誤。
  6. -DCPU_BASELINE=NEON -DCPU_DISPATCH=NEON ,開啟NEON優化。ENABLE_NEON是個沒用的參數,就算define了,也會顯示No help, variable specified on the command line
  7. BUILD_JAVA=OFF,不編譯java相關的
  8. BUILD_opencv_world=ON,把OpenCV編譯到一個world庫,減少庫的數量。按需設置。
  9. OPENCV_ENABLE_NONFREE=ON,編譯非免費算法。按需設置。
  10. OPENCV_EXTRA_MODULES_PATH=F:\opencv_401\opencv_contrib_401\modules,編譯extra模塊
  11. BUILD_ZLIB:BOOL=ON,解決可能的zlib鏈接失敗的問題。如果沒有這個選項,就會鏈接到編譯時固定的NDK路徑去了

編譯與安裝

先后直線下面兩個命令即可

E:\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe
E:\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe install


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM