cmake:导入预构建库时缺少并且没有已知的规则
我想使用以下CmakeLists.txt代码段导入预构建库:cmake:导入预构建库时缺少并且没有已知的规则,cmake,Cmake,我想使用以下CmakeLists.txt代码段导入预构建库: add_library(openssl-crypto SHARED IMPORTED ) set_target_properties(openssl-crypto PROPERTIES IMPORTED_LOCATION ${external_DIR}/li
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)
我将此链接链接到我的库,如下所示:
目标链接库(aes加密openssl加密)
尝试生成时返回此错误:
'/libs/arm64-v8a/libcrypto.so', needed by ..., missing and no known rule to make it
我发现
set\u target\u properties
函数不喜欢相对路径
从 导入目标的磁盘上主文件的完整路径
为了解决这个问题,我使用了库的完整路径 例如:
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 )
您可以使用属性为
TARGET
的set\u property
函数,而不是set\u TARGET\u properties
,然后您可以使用宏${PROJECT\u SOURCE\u DIR}
相对地设置路径
# import shared library libmylib.so
add_library( my-imported-lib
SHARED
IMPORTED)
# set the path to appropriate so files with appropriate architectures
set_property(TARGET
my-imported-lib
PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/<path_to_libs_directory>/${ANDROID_ABI}/libmy-imported-lib.so)
...
# link imported library to your developed library
target_link_libraries( my-developed-lib
my-imported-lib )
#导入共享库libmylib.so
添加库(我的导入库)
共享
进口的)
#将路径设置为具有适当体系结构的适当so文件
设置_属性(目标
我的导入库
属性导入(导入的位置${PROJECT\u SOURCE\u DIR}/${ANDROID\u ABI}/libmy IMPORTED lib.so)
...
#将导入的库链接到开发的库
目标链接库(我开发的库
我的导入库)
也许您可以使用宏
${PROJECT\u SOURCE\u DIR}
,同时使用set\u target\u properties设置lib path
,但我没有这样检查。可能文件的日期时间错误。
设置${external_DIR}/libs/${ANDROID_ABI}/libcrypto的当前日期时间。因此
:
touch ${external_DIR}/libs/${ANDROID_ABI}/libcrypto.so
如果使用:
添加依赖项(aes crypto openssl crypto)
有帮助吗?那么如何构建openssl加密呢?添加依赖项
不起作用。我使用add_库(openssl crypto SHARED IMPORTED)
构建openssl加密库问题似乎是变量“external_DIR”为空。谢谢。external_DIR是空的,实际上,当我将external_DIR更改为绝对路径时,我没有看到相同的错误。但现在我在构建另一个预构建库时遇到了一个新错误,即“添加符号时出错:文件格式错误”,如add_library(jni native helper SHARED IMPORTED)set_target_properties(jni native helper properties IMPORTED_LOCATION../../../src/main/cpp/external/libs/arm64-v8a/libnativehelper.so:)
,@用户7377570您应该为其创建一个新问题。我遇到了与您相同的问题。使用${PROJECT\u SOURCE\u DIR}
将库路径设置为set\u target\u属性
对我有效。这个答案应该被接受