查找\u库或链接\u目录或查找\u包?什么是更好的方法?错误-使用cmake链接库
给定的查找\u库或链接\u目录或查找\u包?什么是更好的方法?错误-使用cmake链接库,cmake,gstreamer,dynamic-linking,shared-libraries,Cmake,Gstreamer,Dynamic Linking,Shared Libraries,给定的 文件/usr/lib/gstreamer-0.10/libgstffmpeg.so存在 在CMakeLists.txt中进行更改 方法1查找库() 查找库(GST\u FFMPEG名称gstffmpeg路径/usr/lib/gstreamer-0.10/) … 目标链接库(MyLibrary或MyExecutable${GST\U FFMPEG}) 当我使用上述配置(方法1)运行make时,会出现以下错误 /bin/ld:警告:libvpx.so.1,未找到/usr/lib/i386 l
文件
/usr/lib/gstreamer-0.10/libgstffmpeg.so
存在在CMakeLists.txt中进行更改 方法1
查找库()
查找库(GST\u FFMPEG名称gstffmpeg路径/usr/lib/gstreamer-0.10/)…
目标链接库(MyLibrary或MyExecutable${GST\U FFMPEG}) 当我使用上述配置(方法1)运行
make
时,会出现以下错误
/bin/ld:警告:libvpx.so.1,未找到/usr/lib/i386 linux gnu/libavcodec.so.53所需的文件(请尝试使用-rpath或-rpath链接)/bin/ld:警告:libschroedinger-1.0.so.0,未找到/usr/lib/i386 linux gnu/libavcodec.so.53所需的文件(请尝试使用-rpath或-rpath链接)
/bin/ld:警告:libgsm.so.1,未找到/usr/lib/i386 linux gnu/libavcodec.so.53所需的文件(请尝试使用-rpath或-rpath链接) 看起来添加的库依赖于更多未链接的库!我可以在/usr/lib中看到上面3.so文件。因此,方法1的一个可能解决方案是再添加三个
find_library()
函数。对吧?
可能不是-探索上述可能解决方案中发现的问题
- 问题1。有没有其他方法可以省去寻找目标的工作 依赖库和链接库?所有依赖库自动链接的方法
链接目录()
链接目录(/usr/lib/gstreamer-0.10/)目标链接库(MyLibrary或MyExecutable gstffmpeg) 当我使用上述配置(方法2)运行
make
时,会出现以下错误
bin/ld:找不到-lgstffmpeg
- 问题2。如何用上述方法2解决问题
- 第三季度。哪种方法1或2更好
我尝试了两种方法,但两种方法都有问题。首先回答您的第三个问题,我认为首选方法是方法1 从以下文件: 请注意,此命令很少是必需的。find_package()和find_Library()返回的库位置是绝对路径。将这些绝对库文件路径直接传递给target_link_libraries()命令。CMake将确保链接器找到它们 不管您采取什么方法,我都不知道有什么简单的方法可以自动获取这些“子依赖项”的列表并添加它们。我只需要为每个文件执行
find_包
或find_库
至少这样,如果没有找到依赖项,您的项目将在CMake配置时失败,而不是在链接时失败。我遇到了类似的情况,我通过在CMakesList.txt中添加来解决它,就在find_library()之前,添加以下命令: 设置(CMAKE_PREFIX_PATH/the/PATH/to/your/lib/)
,但通常情况下,如果依赖项库位于usr/lib或usr/local/lib路径中,它可以通过调用函数来查找。这似乎与此处的建议相冲突: