我正在嘗試使用libvlc庫使用cmake來編譯我的C++項目。我的os是osx v10.9.2。我的cmake版本是2.8.12。我實際上可以用cmake編譯我的程序並make。但是當我嘗試運行該程序時,出現鏈接錯誤:無法使用libvlc庫(osx)運行C++程序
dyld: Library not loaded: @loader_path/lib/libvlc.5.dylib
。一些互聯網搜索導致我出現鏈接錯誤,這是因爲libvlc安裝在/Applications/VLC.app/...../lib中可能是問題所在嗎?我應該以某種方式指定圖書館的絕對鏈接嗎?使用rpath?我在這裏有點失落。
這裏是我的CMakeLists.txt簡化:
cmake_minimum_required(VERSION 2.8.8)
set(LIBVLC_PATH "/Applications/VLC.app/Contents/MacOs")
find_path(LIBVLC_INCLUDE_DIR
NAMES vlc/libvlc.h
PATHS ${LIBVLC_PATH}/include
PATH_SUFFIXES vlc
)
find_library(LIBVLC_LIBRARY
NAMES libvlc vlc
PATHS ${LIBVLC_PATH}/lib
NO_DEFAULT_PATH
)
find_library(LIBVLC_LIBRARY NAMES libvlc vlc)
find_library(LIBVLC5_LIBRARY
NAMES libvlc.5 vlc.5
PATHS ${LIBVLC_PATH}/lib
NO_DEFAULT_PATH
)
find_library(LIBVLC5_LIBRARY NAMES libvlc.5 vlc.5)
include_directories(${LIBVLC_INCLUDE_DIR})
link_directories(${LIBVLC_PATH}/lib)
add_executable(
Projet.x
${sourcefiles}
${headerfiles}
)
target_link_libraries(
Projet.x
${LIBVLC_LIBRARY}
${LIBVLC5_LIBRARY}
)
[編輯解決方案]
感謝您的鏈接我設法使它工作使用下面的腳本:
#!/bin/bash
if [ $# -lt 2 ] ; then
echo "Usage: $0 <vlc_path> <project_path>"
exit 1
fi
VLC_PATH=$1
PROJECT_PATH=$2
install_name_tool -change @loader_path/lib/libvlc.5.dylib $VLC_PATH/lib/libvlc.5.dylib $YCSTATS_PATH/build/YCStats.x
install_name_tool -change @loader_path/lib/libvlccore.7.dylib $VLC_PATH/lib/libvlccore.7.dylib $PROJECT_PATH/build/YCStats.x
這腳本在命令CMakeList.txt中調用:
add_custom_command(TARGET Project.x
POST_BUILD
COMMAND ${CMAKE_SOURCE_DIR}/cmake/Modules/FixBundle.sh ${LIBVLC_PATH} ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Fixing application bundle for local run"
)
如果之後沒有看到任何區別,請嘗試修改主源並保存並執行make命令(如果沒有更改應用於文件,則不會再編譯二進制文件)(請檢查以下行:「修復應用程序捆綁本地運行「)