Cross Compile
Configure
build_opencv.sh
SCRIPT_DIR="$(cd $(dirname $0); pwd -P)"
OPENCV_VERSION=4.6.0
ANDROID_NATIVE_API_LEVEL=29
ANDROID_PLATFORM=android-${ANDROID_NATIVE_API_LEVEL}
ANDROID_ABI=arm64-v8a
NDK_VERSION=21.1.6352462
CMAKE_SYSTEM_VERSION=23
INSTALL_DIR=${SCRIPT_DIR}/../sdk
BUILD_DIR=${SCRIPT_DIR}/build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-H${BUILD_DIR}/opencv-${OPENCV_VERSION} \
-DCMAKE_TOOLCHAIN_FILE=${HOME}/Android/Sdk/ndk/${NDK_VERSION}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${ANDROID_ABI} \
-DANDROID_SDK_ROOT=${HOME}/Android/Sdk \
-DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ABI} \
-DANDROID_PLATFORM=${ANDROID_PLATFORM} \
-DANDROID_NDK=${HOME}/Android/Sdk/ndk/${NDK_VERSION} \
-DCMAKE_ANDROID_NDK=${HOME}/Android/Sdk/ndk/${NDK_VERSION} \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_MAKE_PROGRAM=${HOME}/Android/Sdk/cmake/3.18.1/bin/ninja \
-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION} \
-DCMAKE_SYSTEM_NAME=Android \
-DBUILD_LIST=core,improc,imgcodecs \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON \
-GNinja \
..
Build
cmake --build . --target all
cmake --build . --target libprotobuf
cmake --build . --target quirc
Install
cmake --install .
Usage
CMakeLists.txt
find_package(OpenCV REQUIRED)
target_link_libraries(my-lib ${OpenCV_LIBS})