【问题标题】:Build library using cmake for android with multiples .a files [CMake can not determine linker language for target]使用具有多个 .a 文件的 android 使用 cmake 构建库 [CMake 无法确定目标的链接器语言]
【发布时间】:2018-08-16 14:47:38
【问题描述】:

我的目标是从 C++ SDK 项目构建一个库。

我使用此示例代码作为指南。 GoogleSamples/Android-NDK/Hello-Libs

从这个文档中,我可以使用多个来源:add_library

之前我用的是set_target_properties,不过貌似不需要。

我收到了错误CMake Error: CMake can not determine linker language for target: lib_llsdk但这个关于这个错误的问题没有帮助CMake unable to determine linker language with C++

这是我的cmake代码:

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)

【问题讨论】:

    标签: android c++ cmake


    【解决方案1】:

    只需拆分并使用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多