【发布时间】:2017-11-18 13:59:27
【问题描述】:
我目前正在macOs下用c++构建一个基本的应用程序,这个使用了以下几个库/框架:
FIND_LIBRARY(COCOA_LIBRARY Cocoa)
target_link_libraries(glDiscoverProject
"-framework OpenGL"
"-framework CoreVideo"
"-framework IOKit"
"${COCOA_LIBRARY}"
"glfw3"
"boost_system"
"boost_filesystem")
我希望我可以将编译后的应用程序发送给朋友,他可以启动它而无需安装那些不同的库。
于是我查询,发现CMake可以指定一个存放库的文件。
link_directories(${CMAKE_SOURCE_DIR}/build/lib)
如何使所有这些动态库出现在这个文件中并在 macOS 下的任何机器上工作?
可执行文件上的命令“otool -L”:
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo (compatibility version 1.2.0, current version 1.5.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
/usr/local/opt/boost/lib/libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/opt/boost/lib/libboost_filesystem.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1504.83.101)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1070.22.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 775.19.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.91.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
我正在寻找一种可以应用于我未来所有要部署的项目的解决方案。
编辑:
从超级答案中找到solution。
【问题讨论】:
标签: c++ cmake shared-libraries libraries