cmake:missing,导入预建库时没有已知规则 [英] cmake:missing and no known rule to make it when I import a prebuilt library

查看:355
本文介绍了cmake:missing,导入预建库时没有已知规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to import a prebuilt library using this CmakeLists.txt snippet:

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)

我将此链接链接到我的库为:

I linked this to my library as:

target_link_libraries(aes-crypto openssl-crypto)

尝试构建会返回以下错误:

Attempting to build returns this error:

'/libs/arm64-v8a/libcrypto.so', needed by ...,  missing and no known rule to make it


推荐答案

set_target_properties 函数不喜欢相对路径。

I found that the set_target_properties function doesn't like relative paths.

来自 CMake有关IMPORTED_LOCATION的文档

From the CMake Documentation on IMPORTED_LOCATION


完整路径

Full path to the main file on disk for an IMPORTED target.






要解决此问题,我改为使用库的完整路径。


To resolve this issue, I used the full path to the library instead.

示例:

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 )

这篇关于cmake:missing,导入预建库时没有已知规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆