im试图用clion and cmake构建一个OSX捆绑包,目前,库链接正确地链接我没有预编译错误,但是当我构建并尝试运行程序时,我得到了以下错误
Dyld:未加载的图书馆:libxl.dylib 引用以下参考: /path/to/operutable/ 原因:未找到图像
在此问题上进行了搜索,似乎找不到一个明确的解决方案,这可能是由于我缺乏CMAKE和C 的经验。
如果有人有解决方案或可以将我指向我应该阅读的方向以进一步理解这一点,这将不胜感激。
请参阅下面的cmakelists.txt
cmake_minimum_required(版本3.7( 项目名称(项目名称( set(cmake_cxx_standard 14( set(source_files main.cpp( find_package(需要QT5核( find_package(需要qt5widgets( find_package(需要qt5gui( set(project_link_libs libxl.dylib( link_directories($ {cmake_source_dir}/libxl/lib( include_directories($ {cmake_source_dir}/libxl/include_cpp( #MAC捆绑包(在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 ::小部件( target_link_libraries(project_target $ {project_link_libs}((
OSX上的人通常使用框架并将其集成到App Bundle中。
规则看起来像:
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的相对路径以使其可执行文件以找到它。框架不需要此部分,因为它们具有标准化的文件夹结构,并且可执行的外观以其依赖关系。