【问题标题】:Create a standalone application创建一个独立的应用程序
【发布时间】: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


    【解决方案1】:

    您想要的是一个 App Bundle。这基本上是一个文件夹,其中包含所有资源(图像、声音、库、框架、应用程序信息等)以及二进制/二进制文件。

    您可以使用 CMake 做到这一点。如果您正在使用它,您也可以直接在 XCode 中执行此操作。无论您使用什么 IDE 或构建系统,您都必须在一定程度上对此进行专门化,具体取决于您正在制作的应用程序以及它需要什么资源。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-24
      • 2011-03-13
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      相关资源
      最近更新 更多