.那么对于之后的数字,如何在cmake的find_库中匹配它们?链接作为子依赖项找到的共享对象时出错

.那么对于之后的数字,如何在cmake的find_库中匹配它们?链接作为子依赖项找到的共享对象时出错,cmake,gstreamer,dynamic-linking,shared-objects,shared-libraries,Cmake,Gstreamer,Dynamic Linking,Shared Objects,Shared Libraries,给定的 ls-lrt/usr/lib/libvpx*results lrwxrwx 1 root root根目录2012年2月9日15日/usr/lib/libvpx.so.1.0->libvpx.so.1.0 lrwxrwx 1 root root根目录2012年2月9日15日/usr/lib/libvpx.so.1->libvpx.so.1.0.0 -rw-r--r--1根根目录646120 2012年2月9日/usr/lib/libvpx.so.1.0.0 ls-lrt/usr/lib/l

给定的
ls-lrt/usr/lib/libvpx*
results

lrwxrwx 1 root root根目录2012年2月9日15日/usr/lib/libvpx.so.1.0->libvpx.so.1.0
lrwxrwx 1 root root根目录2012年2月9日15日/usr/lib/libvpx.so.1->libvpx.so.1.0.0
-rw-r--r--1根根目录646120 2012年2月9日/usr/lib/libvpx.so.1.0.0

ls-lrt/usr/lib/libschroedinger*
results

lrwxrwx 1根根根2012年2月8日29日/usr/lib/libschroedinger-1.0.so.0->libschroedinger-1.0.so.0.11.0
-rw-r--r--1根根根774044 2012年2月8日/usr/lib/libschroedinger-1.0.so.0.11.0

ls-lrt/usr/lib/libgsm*
results

lrwxrwx 1 root根目录2009年11月5日16日/usr/lib/libgsm.so.1->libgsm.so.1.0.12
-rw-r--r--1根根根目录50680 2009年11月5日/usr/lib/libgsm.so.1.0.12

这是解决方法1中发现的问题的可能解决方案。你可以/不可以提及那件事

可能的解决方案
正如我在家长问题中提到的,我们可能需要添加三个
find\u library()
函数。以下是来自CMakeLists.txt的内容

可能的解决方案1a

查找库(VPX库名称为libvpx.so.1路径/usr/lib/)
查找库(薛定谔库名称为libschroedinger-1.0.so.0-1.0路径/usr/lib/) 查找库(GSM库名称libgsm.so.1路径/usr/lib/)

目标链接库(MyLibrary或MyExecutable${VPX_库}${SCHROEDINGER_库}${GSM_库})

可能的解决方案1b

查找库(VPX库名称为VPX路径/usr/lib/)
查找库(薛定谔库名称薛定谔-1.0路径 /usr/lib/)查找库(GSM\u库名称GSM路径/usr/lib/)

目标链接库(MyLibrary或MyExecutable${VPX_库}${SCHROEDINGER_库}${GSM_库})

错误
对于解1a和1b,我得到相同的错误

CMake错误:此项目中使用了以下变量,但是 它们被设置为NOTFOUND。请设置它们或确保它们已设置 并在CMake文件中正确测试:

GSM_库
由目录/someDirectory中的目标“MyLibraryOrMyExecutable”链接

薛定谔大学图书馆
由目录/someDirectory中的目标“MyLibraryOrMyExecutable”链接

VPX_库
由目录/someDirectory中的目标“MyLibraryOrMyExecutable”链接

cmake在从find_library()中读取名称中的vpx后查找libvpx.so,但找到一个不同的文件,如libvpx.so.1,因此我在给出确切名称的地方也使用了1b。但还是没有运气

Q如何解决这样一个问题:共享对象的名称在扩展名后还包含一个数字,而确切名称与
find_library()
中给出的名称不匹配?我试图给出确切的名称,但这也不起作用

使用命令和变量来粘合真正的库名。例如:

> cat CMakeLists.txt
message("suffixes: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
message("prefixes: ${CMAKE_FIND_LIBRARY_PREFIXES}")
> cmake -H. -B_builds
suffixes: .so;.a
prefixes: lib
是列表变量,可以添加新后缀:

> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .so.17)
find_library(library edata-book-1.2)
message("library: ${library}")
> cmake -H. -B_builds
library: /usr/lib/libedata-book-1.2.so.17
但是我很确定这里真正的问题是包管理器的使用(:通常
lib.so
是指向
lib.so.N.M
文件的符号链接。因此我建议您查看手册 并以适当的方式安装库