android studio的CMakeLists.txt寫好后,在Studio中編譯沒問題,在命令編譯時則需要配置很多參數才能成功
示例CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.4.1) set(UVC_LIBS UVCCamera uvc usb100 jpeg-turbo1500) FOREACH(UVC_LIB ${UVC_LIBS}) add_library(${UVC_LIB} SHARED IMPORTED) set_target_properties(${UVC_LIB} PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/${ANDROID_ABI}/lib${UVC_LIB}.so) ENDFOREACH(UVC_LIB) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFFFFFFF_DETECTOR_EXPORT -std=c++11") add_library(XXXXX SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/XDFD.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/DFDSF.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/base64/CBase64.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/camera/AAAA.cpp ) target_include_directories(XXXXX PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc ${CMAKE_CURRENT_SOURCE_DIR}/src/XXX) target_link_libraries(SL3DCameraCtrl ${UVC_LIBS} android log)
由於使用了STL,整個CMAKE執行的命令行寫成如下:
D:\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" ..\..\ -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows-x86_64\bin\make.exe" -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DANDROID_STL=c++_static
用於編譯的批處理文件如下:
set ANDROID_NDK=D:\10.AndroidSDK\ndk\android-ndk-r15b mkdir build\arm64-v8a cd build\arm64-v8a D:\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" ..\..\ -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows-x86_64\bin\make.exe" -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DANDROID_STL=c++_static D:\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe --build . cd ..\..\