SONAME在使用autogen和cmake构建时共享protobuf-lib的不一致性



当我用autogen构建共享的protobuf(版本3.15.8(库时,我会得到libprotoc.so.26:

./autogen.sh
./configure --enable-shared
make

当我用cmake构建它时,我得到了libprotobuf.so.3.15.8.0.

cd cmake && mkdir build && cd build
cmake -Dprotobuf_BUILD_SHARED_LIBS=on ..
make 

有没有一种方法可以用cmake构建libprotoc.so.26?(我如何在那里设置SONAME?(

您似乎正在查找共享库目标的SOVERSION属性。据我所知,没有命令行选项可以影响目标属性,因此您需要修改相应的CMakeLists.txt文件。您需要确定为库选择的CMake目标名称(这是项目的特征,而不是CMake本身的特征(,比如";protobuf_lib";。然后添加形式的命令

target_set_properties(protobuf_lib
    PROPERTIES SOVERSION 26)

或者,如果有问题的目标已经有target_set_properties命令,则可以将SOVERSION 26添加到该命令的属性列表中。

最新更新