gpt4 book ai didi

android - 如何强制 CMake 不在共享库文件名和 soname 中添加主要/次要版本?

转载 作者:行者123 更新时间:2023-12-02 16:17:29 29 4
gpt4 key购买 nike

我正在使用 Cmake for Android(使用 Android NDK)编译 libclang

这是配置文件名和soname的CMake配置部分:

set_target_properties(libclang
PROPERTIES
VERSION ${LIBCLANG_LIBRARY_VERSION}
DEFINE_SYMBOL _CINDEX_LIB_)

在不同的文件中:

set(LIBCLANG_LIBRARY_VERSION
"${CLANG_VERSION_MAJOR}" CACHE STRING
"Major version number that will be appended to the libclang library")

if(NOT DEFINED CLANG_VERSION_MAJOR)
set(CLANG_VERSION_MAJOR ${LLVM_VERSION_MAJOR})
endif()

由于我编译了“7.0.0”版本的 llvm/clang,libclang 文件名和 soname 是 libclang.so.7,这对于 Android 来说是不需要的。

~/llvm/build anton$ls -l lib/libclang.so
lrwxrwxrwx 1 anton anton 13 Nov 30 12:13 lib/libclang.so -> libclang.so.7
~/llvm/build anton$arm-linux-androideabi-readelf --dynamic lib/libclang.so.7 | grep SONAME
0x0000000e (SONAME) Library soname: [libclang.so.7]

如何避免在文件名和 soname 中添加“.7”(使其只是 libclang.so)?

我尝试过:

1)注释属性如下:

set_target_properties(libclang
PROPERTIES
#VERSION ${LIBCLANG_LIBRARY_VERSION}
DEFINE_SYMBOL _CINDEX_LIB_)

由于某种原因,文件名和soname仍然是“.so.7”

2)将其设置为空:

set_target_properties(libclang
PROPERTIES
VERSION ""
DEFINE_SYMBOL _CINDEX_LIB_)

文件名和soname是“.so”。 (末尾带点)。

我能做什么?

最佳答案

我无法对此进行测试,但尝试设置 NO_SONAME 属性而不是其他修改。

set_target_properties(libclang
PROPERTIES NO_SONAME 1
)

关于android - 如何强制 CMake 不在共享库文件名和 soname 中添加主要/次要版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552950/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com