gpt4 book ai didi

cmake - find_library 如何处理版本号?

转载 作者:行者123 更新时间:2023-12-03 23:08:10 32 4
gpt4 key购买 nike

CMake的find_library如何处理“libFOO.so.3.2”中的版本号?有些库有从 libFOO.so 到正确版本的符号链接(symbolic link),有些则没有。

当我只使用 find_library(NAMES FOO) 时,CMake 会找到没有符号链接(symbolic link)的库吗? ?
我应该怎么做才能帮助 CMake 找出正确的库?

最佳答案

假设一个linux发行版,系统包管理器一般会提供运行时包和开发包。如果你安装了一个库的开发包(例如 libFOO-dev),它通常会在你的/usr/lib 或/usr/local/lib 中包含以下三个文件

libFOO.so.3.2.0 (the versioned binary)
libFOO.so.3 (soname = symlink to versioned binary)
libFOO.so (namelink = symlink to soname)

namelink 的文件名中没有版本详细信息。这将用于通过链接器命令行选项查找库,例如-lFOO

您应该在 find_library cmake 命令中使用名称链接(例如 FOO)。

链接器会将 soname 文件嵌入到您的二进制文件中。

如果您安装了多个版本的库,请确保将 namelink 文件符号链接(symbolic link)到您要使用的 soname 文件。如果您安装了同一个库的多个主要版本,这实际上只是一个问题。在主要版本中,API 应该向后兼容。

关于cmake - find_library 如何处理版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60940689/

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