構建編譯項目 不需要安裝CMake,MinGW等額外工具。只需要Android NDK和OpenCV源碼 。 在WIN10上使用cmd視窗命令編譯OpenCV步驟,操作版本為4.0.1: 1. 在OpenCV根目錄下麵新建一個文件夾,比如叫做build_cmd。因為OpenCV要求 不和 是同一個文 ...
構建編譯項目
不需要安裝CMake,MinGW等額外工具。只需要Android NDK和OpenCV源碼。
在WIN10上使用cmd視窗命令編譯OpenCV步驟,操作版本為4.0.1:
- 在OpenCV根目錄下麵新建一個文件夾,比如叫做build_cmd。因為OpenCV要求
CMAKE_BINARY_DIR
不和CMAKE_SOURCE_DIR
是同一個文件夾,所以不能在根目錄下直接執行cmake - cd到build_cmd
- 執行如下命令,路徑對應修改
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 ../
要點:
E:\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe
,這個是直接使用Android SDK中自帶的cmake,沒必要重新下cmake程式-DCMAKE_TOOLCHAIN_FILE=E:\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake
,這個需要指定為Android SDK中的ndk中自帶的文件,否則,可能會遇到NDK版本不對或者找不到toolchain文件的錯誤。-DANDROID_ABI="arm64-v8a"
,這個千萬不能忘記-G "Ninja"
:最近的版本開始,Android SDK自帶的cmake已經沒有之前的Android - Gradle
這個生成方式了,所以轉而選擇Ninja
。不要去選擇MinGW Makefiles
之類的,因為那樣的話,需要重新下載其他,而andoird sdk中自帶Ninja編譯-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".
錯誤。-DCPU_BASELINE=NEON -DCPU_DISPATCH=NEON
,開啟NEON優化。ENABLE_NEON
是個沒用的參數,就算define了,也會顯示No help, variable specified on the command line
BUILD_JAVA=OFF
,不編譯java相關的BUILD_opencv_world=ON
,把OpenCV編譯到一個world庫,減少庫的數量。按需設置。OPENCV_ENABLE_NONFREE=ON
,編譯非免費演算法。按需設置。OPENCV_EXTRA_MODULES_PATH=F:\opencv_401\opencv_contrib_401\modules
,編譯extra模塊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