我目前正在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。
答案 0 :(得分:1)
你想要的是一个App Bundle。这基本上是一个文件夹,包含所有资源(图像,声音,库,framworks,app info等)以及二进制文件/二进制文件。
你可以用CMake做到这一点。如果您正在使用它,也可以直接在XCode中执行此操作。无论您使用何种IDE或构建系统,您都必须在某种程度上专注于此,具体取决于您正在制作的应用程序以及所需的资源。
您可以阅读有关苹果捆绑here的更多信息。