给定
ls -lrt /usr/lib/libvpx*
结果
lrwxrwxrwx 1 根 15 Feb 9 2012 /usr/lib/libvpx.so.1.0 ->libvpx.so.1.0.0 lrwxrwxrwx
1 根 15 Feb 9 2012 /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*
结果
lrwxrwxrwx 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*
结果
lrwxrwxrwx 1 root root 2009 年 11 月 5 日 /usr/lib/libgsm.so.1 -> libgsm.so.1.0.12
-rw-r--r-- 1 root root 50680 2009 年 11 月 5 日 /usr/lib/libgsm。所以.1.0.12
这是此问题的方法 1 中发现的问题的可能解决方案。您可能/可能不会提及。
可能的解决方案
正如我在父问题中提到的,我们可能需要添加三个find_library()
函数。以下是 CMakeLists.txt 的内容
可能的解决方案 1a
find_library(VPX_LIBRARIES NAMES libvpx.so.1 PATHS /usr/lib/)
find_library(SCHROEDINGER_LIBRARIES NAMES libschroedinger-1.0.so.0-1.0 PATHS /usr/lib/) find_library(GSM_LIBRARIES NAMES libgsm.so.1 PATHS /usr/lib / )target_link_libraries(MyLibraryOrMyExecutable ${VPX_LIBRARIES} ${SCHROEDINGER_LIBRARIES} ${GSM_LIBRARIES} )
可能的解决方案 1b
find_library(VPX_LIBRARIES NAMES vpx PATHS /usr/lib/)
find_library(SCHROEDINGER_LIBRARIES NAMES schroedinger-1.0 PATHS /usr/lib/) find_library(GSM_LIBRARIES NAMES gsm PATHS /usr/lib/)target_link_libraries(MyLibraryOrMyExecutable ${VPX_LIBRARIES} ${SCHROEDINGER_LIBRARIES} ${GSM_LIBRARIES} )
错误
对于解决方案 1a 和 1b,我得到相同的错误
CMake 错误:此项目中使用了以下变量,但它们设置为 NOTFOUND。请设置它们或确保它们在 CMake 文件中正确设置和测试:
由目录 / someDirectory
中的目标“MyLibraryOrMyExecutable”链接的 GSM_LIBRARIESSCHROEDINGER_LIBRARIES
由目录 /someDirectory 中的目标“MyLibraryOrMyExecutable”链接VPX_LIBRARIES
由目录 /someDirectory 中的目标“MyLibraryOrMyExecutable”链接
cmake 在从 find_library() 读取 NAMES 中的 vpx 后查找 libvpx.so,但找到了一个不同的文件,例如 libvpx.so.1,因此我也使用了 1b,我已经给出了确切的名称。但仍然没有运气。
Q如何解决这样的问题,即共享对象的名称在扩展名后还包含一个数字,并且确切的名称与 中给出的名称不匹配find_library()
。? 我试图给出确切的名称,这也不起作用