Given
文件/usr/lib/gstreamer-0.10/libgstffmpeg.so
存在
在 CMakeLists.txt 中进行更改
方法一 find_library()
find_library(GST_FFMPEG 名称 gstffmpeg 路径 /usr/lib/gstreamer-0.10/ )
...
target_link_libraries( MyLibraryOrMyExecutable ${GST_FFMPEG} )
当我跑步时make
使用上述配置(方法1),我收到以下错误
/bin/ld:警告:libvpx.so.1,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或 -rpath-link)
/bin/ld:警告:libschroedinger-1.0.so.0,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或 -rpath-link)
/bin/ld:警告:libgsm.so.1,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或 -rpath-link)
看起来添加的库依赖于更多未链接的库!我可以在/usr/lib中看到以上3个.so文件。因此,方法 1 的一种可能解决方案是再添加三个find_library()
功能。正确的 ?
也许不会-这个问题 https://stackoverflow.com/questions/17880532/so-with-numerals-after-that-how-to-match-them-in-find-library-in-cmake-error探讨上述可能解决方案中发现的问题
- Q1.有没有其他方法可以省去寻找的麻烦
依赖库并链接它们?使用一种方法自动链接所有依赖库?
方法2 link_directories()
link_directories(/usr/lib/gstreamer-0.10/)
target_link_libraries( MyLibraryOrMyExecutable gstffmpeg )
当我跑步时make
使用上述配置(方法2),我收到以下错误
bin/ld: 找不到 -lgstffmpeg
- Q2。上述方法2的问题如何解决?
- Q3。方法 1 和方法 2 哪个更好?
附:尝试阅读 cmake 文档并搜索 SO 但无法解决我的问题。
我尝试了两种方法,但都遇到问题
首先回答你的问题3,我认为首选方法是方法1。
从文档中link_directories http://www.cmake.org/cmake/help/v2.8.11/cmake.html#command%3alink_directories:
请注意,很少需要此命令。 find_package() 和 find_library() 返回的库位置是绝对路径。将这些绝对库文件路径直接传递给 target_link_libraries() 命令。 CMake 将确保链接器找到它们。
无论您采取哪种方法,我都不知道有什么简单的方法可以自动获取这些“子依赖项”的列表并添加它们。我只想做一个find_package
or find_library
对于每个。
至少这样,如果未找到依赖项,您的项目将在 CMake 配置时而不是链接时失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)