创建一个独立的应用程序

Create a standalone application

我目前正在 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

您想要的是 App Bundle。这基本上是一个包含所有资源(图像、声音、库、框架、应用程序信息等)以及 binary/binaries.

的文件夹

您可以使用 CMake 来完成此操作。如果你正在使用它,你也可以直接在 XCode 中进行。无论您使用什么 IDE 或构建系统,您都必须在某种程度上根据您制作的应用程序及其需要的资源对其进行专门化。

您可以阅读更多有关 apple 捆绑包的信息 here