Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用CMAKE在OSX捆绑包中包含库_C++_Macos_Cmake_Clion_Dylib - Fatal编程技术网

C++ 如何使用CMAKE在OSX捆绑包中包含库

C++ 如何使用CMAKE在OSX捆绑包中包含库,c++,macos,cmake,clion,dylib,C++,Macos,Cmake,Clion,Dylib,我试图用Clion和Cmake构建一个OSX包,目前库链接正确,我没有预编译错误,但是当我构建并尝试运行程序时,我得到以下错误 dyld: Library not loaded: libxl.dylib Referenced from: /path/to/executable/ Reason: image not found dyld:未加载库:libxl.dylib 引用自: /路径/到/可执行文件/ 原因:找不到图像 我在这个问题上找过,似乎找不到一个明确的解决

我试图用Clion和Cmake构建一个OSX包,目前库链接正确,我没有预编译错误,但是当我构建并尝试运行程序时,我得到以下错误

dyld: Library not loaded: libxl.dylib Referenced from: /path/to/executable/ Reason: image not found dyld:未加载库:libxl.dylib 引用自: /路径/到/可执行文件/ 原因:找不到图像 <>我在这个问题上找过,似乎找不到一个明确的解决办法,这可能是因为我缺乏CMake和C++的经验。p> 如果有人有一个解决方案,或者可以指出我应该阅读的方向,以进一步了解这一点,将不胜感激

请参阅下面的CMakeLists.txt

cmake_minimum_required(VERSION 3.7) project(project name) set(CMAKE_CXX_STANDARD 14) set(SOURCE_FILES main.cpp) find_package( Qt5Core REQUIRED ) find_package( Qt5Widgets REQUIRED ) find_package( Qt5Gui REQUIRED ) set(PROJECT_LINK_LIBS libxl.dylib) link_directories(${CMAKE_SOURCE_DIR}/LibXL/lib) include_directories(${CMAKE_SOURCE_DIR}/LibXL/include_cpp) #Mac Bundle (Built on Mac) add_executable(project_target_mac MACOSX_BUNDLE main.cpp) qt5_use_modules( project_target_mac Core Widgets 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 Core Widgets Gui ) target_link_libraries(project_target Qt5::Widgets) target_link_libraries(project_target ${PROJECT_LINK_LIBS } ) cmake_最低要求(3.7版) 项目(项目名称) 套装(CMAKE_CXX_标准14) 集合(源文件main.cpp) 查找包(需要QT5核心) 查找_包(需要Qt5Widgets) 查找_包(需要Qt5Gui) 集合(项目链接库libxl.dylib) 链接目录(${CMAKE_SOURCE_DIR}/LibXL/lib) include_目录(${CMAKE_SOURCE_DIR}/LibXL/include_cpp) #Mac捆绑包(基于Mac构建) 添加可执行文件(project\u target\u MACOSX\u BUNDLE main.cpp) qt5_使用_模块(项目_目标_mac核心小部件Gui) 目标链接库(项目目标mac Qt5::小部件) 目标链接库(project\u target\u mac${project\u link\u LIBS}) #设置\u目标\u属性(项目\u目标\u mac属性安装\u RPATH“${CMAKE\u SOURCE\u DIR}/LibXL/lib”) 添加\u可执行文件(项目\u目标${SOURCE\u FILES}) qt5_使用_模块(项目_目标核心小部件Gui) 目标链接库(项目目标Qt5::小部件) 目标链接库(项目链接库) } )
在OSX上,man通常使用框架,并通过安装规则将其集成到应用程序包中

规则如下所示:

    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\u INSTALL\u prefix
指定安装前缀,默认值为
/usr/local


对于单个库文件,过程非常类似,但是您还必须调整应用程序的
RPATH
,以添加库的相对路径,以便可执行文件找到它。框架不需要这个部分,因为它们有一个标准化的文件夹结构,可执行文件会查看它的依赖关系。

我最近为此修补了Tagaini Jisho项目,也许你可以使用我的pull请求作为示例:谢谢,我会看一看