创建一个独立的应用程序

时间:2017-11-18 13:59:28

标签: c++ cmake shared-libraries libraries

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

1 个答案:

答案 0 :(得分:1)

你想要的是一个App Bundle。这基本上是一个文件夹,包含所有资源(图像,声音,库,framworks,app info等)以及二进制文件/二进制文件。

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

您可以阅读有关苹果捆绑here的更多信息。