cmake:在导入预建库时缺少并且没有已知的规则

use*_*570 21 cmake

我想使用此CmakeLists.txt片段导入预构建的库:

add_library(openssl-crypto
            SHARED
            IMPORTED )
set_target_properties(openssl-crypto
                      PROPERTIES
                      IMPORTED_LOCATION
                      ${external_DIR}/libs/${ANDROID_ABI}/libcrypto.so )
include_directories(${external_DIR}/include/openssl)
Run Code Online (Sandbox Code Playgroud)

我把这个链接到我的图书馆:

target_link_libraries(aes-crypto openssl-crypto)

尝试构建会返回此错误:

'/libs/arm64-v8a/libcrypto.so', needed by ...,  missing and no known rule to make it
Run Code Online (Sandbox Code Playgroud)

Nat*_* F. 24

我发现该set_target_properties函数不喜欢相对路径.


来自IMPORTED_LOCATIONCMake文档

IMPORTED目标的磁盘主文件的完整路径.


要解决此问题,我使用了库的完整路径.

例:

set_target_properties ( curl-lib 
                        PROPERTIES IMPORTED_LOCATION 
                        libs/${ANDROID_ABI}/libcurl.a )

. . . becomes . . . 

set_target_properties ( curl-lib 
                        PROPERTIES IMPORTED_LOCATION 
                        ${PROJECT_SOURCE_DIR}/src/main/cpp/libs/${ANDROID_ABI}/libcurl.a )
Run Code Online (Sandbox Code Playgroud)