我正在尝试使用Clion和Cmake构建OSX捆绑软件,目前该库可以正确链接,因为我没有预编译错误,但是当我构建并尝试运行该程序时,出现以下错误
dyld:库未加载:libxl.dylib引用自:/路径/到/可执行文件/原因:找不到图片
我已经搜索了这个问题,似乎找不到明确的解决方案,这可能是由于我缺乏CMake和C ++的经验。
[如果有人有解决方案,或者可以指出我应该阅读的方向以进一步理解这一点,将不胜感激。
请参见下面的CMakeLists.txt
cmake_minimum_required(版本3.7)项目(项目名称)设置(CMAKE_CXX_STANDARD 14)设置(SOURCE_FILES main.cpp)find_package(需要Qt5Core)find_package(需要Qt5Widgets)find_package(需要Qt5Gui)设置(PROJECT_LINK_LIBS libxl.dylib)link_directories($ {CMAKE_SOURCE_DIR} / LibXL / lib)include_directories($ {CMAKE_SOURCE_DIR} / LibXL / include_cpp)#Mac Bundle(在Mac上内置)add_executable(project_target_mac MACOSX_BUNDLE main.cpp)qt5_use_modules(project_target_mac核心小部件Gui)target_link_libraries(project_target_mac Qt5 :: Widgets)target_link_libraries(project_target_mac $ {PROJECT_LINK_LIBS})#set_target_properties(project_target_mac PROPERTIES INSTALL_RPATH“ $ {CMAKE_SOURCE_DIR} / LibXL / lib”)add_executable(project_target $ {SOURCE_FILES})qt5_use_modules(project_target核心小部件Gui)target_link_libraries(project_target Qt5 :: Widgets)target_link_libraries(project_target $ {PROJECT_LINK_LIBS})
规则看起来像:
install( DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/ofxSyphon/libs/Syphon/lib/osx/Syphon.framework"
DESTINATION ${APP_NAME}.app/Contents/Frameworks")
然后,框架文件夹将被复制到应用程序捆绑包的Contents/Frameworks
子文件夹中。为此,应使用以下方式安装应用程序本身:
install(TARGETS ${APP_NAME} DESTINATION .)
并且您可能想用CMAKE_INSTALL_PREFIX
指定安装前缀,默认值为/usr/local
。对于单个库文件,该过程非常相似,但是您还必须调整应用程序的
RPATH
,以添加lib的相对路径,以便可执行文件可以找到它。框架不需要此部分,因为它们具有标准化的文件夹结构,并且可执行文件会对其依赖关系进行查找。