Canato
Canato

Reputation: 3978

Build library using cmake for android with multiples .a files [CMake can not determine linker language for target]

My target is build a library from a C++ SDK project.

I'm using this sample code as guide. GoogleSamples/Android-NDK/Hello-Libs

And from this documentation, I can use more than one source: add_library

Before I was using set_target_properties, but looks like don't need.

I'm getting the error CMake Error: CMake can not determine linker language for target: lib_llsdkbut this question about this error don't help CMake unable to determine linker language with C++

This is my cmake code:

cmake_minimum_required(VERSION 3.4.1)
set(distribution_DIR ${CMAKE_SOURCE_DIR}/../llsdk)

add_library(lib_llsdk STATIC
${distribution_DIR}/libs/${ANDROID_ABI}/libins-sdk-simple-filter-    marker.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_aruco.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_calib3d.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_core.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_features2d.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_img_hash.a
${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_imgproc.a
${distribution_DIR}/libs/${ANDROID_ABI}/libz.a)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

add_library( native-lib
         SHARED
         src/main/cpp/native-lib.cpp )


target_include_directories(native-lib PRIVATE
                       ${distribution_DIR}/include)


target_link_libraries(
                   native-lib
                   android
                  lib_lls
                  log)

Upvotes: 0

Views: 467

Answers (1)

Canato
Canato

Reputation: 3978

Just split and use set_target_properties

cmake_minimum_required(VERSION 3.4.1)

                   set(distribution_DIR ${CMAKE_SOURCE_DIR}/../llsdk)

                   add_library(lib_llsdk_1 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_1 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libins-sdk-simple-filter-marker.a)

                   add_library(lib_llsdk_2 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_2 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_aruco.a)

                   add_library(lib_llsdk_3 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_3 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_calib3d.a)

                   add_library(lib_llsdk_4 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_4 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_core.a)

                   add_library(lib_llsdk_5 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_5 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_features2d.a)

                   add_library(lib_llsdk_6 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_6 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_img_hash.a)

                   add_library(lib_llsdk_7 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_7 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libopencv_imgproc.a)

                   add_library(lib_llsdk_8 STATIC IMPORTED)
                   set_target_properties(lib_llsdk_8 PROPERTIES IMPORTED_LOCATION
                       ${distribution_DIR}/libs/${ANDROID_ABI}/libz.a)

                   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")


                   add_library( 
                                native-lib
                                SHARED
                                src/main/cpp/native-lib.cpp )


                   target_include_directories(native-lib PRIVATE
                                              ${distribution_DIR}/include)

                   target_link_libraries(
                                          native-lib
                                          android
                                          lib_llsdk_1
                                          lib_llsdk_2
                                          lib_llsdk_3
                                          lib_llsdk_4
                                          lib_llsdk_5
                                          lib_llsdk_6
                                          lib_llsdk_7
                                          lib_llsdk_8
                                          log)

Upvotes: 0

Related Questions