【问题标题】:What would be the best way to install (distribute) dynamic libraries in Mac OSX using CMake/Cpack?使用 CMake/Cpack 在 Mac OSX 中安装(分发)动态库的最佳方法是什么?
【发布时间】:2010-06-03 17:06:46
【问题描述】:

我有一个项目,它的工件是两个动态库,比如说libX.dyliblibY.dylib(或.so 用于Linux 发行版)。没有可执行文件。

现在我想分发这些库。由于我已经使用 CMake 编译它,所以我查看了 CPack 并成功生成了用于 Linux 的 .tgz.deb 包。但是,对于 Mac OSX,我不知道,关于其 generators 的 CPack Wiki 对我没有多大帮助。我设法生成了一个 PackageMaker 包,但正如this packagemaker howto 中明确指出的那样,使用此工具时没有卸载选项。然后我读了一些关于Bundles的内容,但我特别迷茫,因为我没有可执行文件。

问题:使用 CPack 为 Mac OSX 生成包的正确方法是什么?

我的理想方案是在 debian/ubuntu 中像捆绑一样轻松安装或作为 deb 文件安装。

感谢您的帮助

编辑 更多细节:其中一个库的代码未打开,所以我不能指望用户做cmake; make; make install

这就是为什么我想要一个 .deb、.tar.gz、bundle 或其他文件的原因。

【问题讨论】:

    标签: macos cmake


    【解决方案1】:

    这取决于您是想以 UNIX-y 方式安装它(这完全可以,实际上是我作为 Mac 用户的偏好)还是要将其安装为 Mac OS X 框架.

    要以 UNIX-y 方式安装库,您可以使用:

    INSTALL(TARGETS target1 target2 DESTINATION lib)
    

    在上面,将 target1target2 替换为导致生成 libX.dylib 和 libY.dylib 的目标的名称(即您在 ADD_LIBRARY 中使用的任何内容)。您可以使用变量CMAKE_INSTALL_PREFIX 来确定库最终在哪里... 使用上述方法,如果您将CMAKE_INSTALL_PREFIX 设置为/usr/local,那么它将在/usr/local/lib 中安装库

    编辑
    根据您的更新,您可能会对Component Install with CPackCPack Mac OS X PackageMaker Generator 感兴趣。由于您要将库安装到系统中,因此您应该使用 PackageMaker 生成器。如果您只是分发应用程序,那么创建一个“.app”捆绑包并将其分发到“.dmg”中将是正确的做法。当您安装 Xcode Developer Tools 时,PackageMaker 会安装在 Mac OS X 上。要将“.app”捆绑包打包到“.dmg”中,您可以使用 Mac OS X 磁盘实用程序应用程序或其相关的命令行工具。

    【讨论】:

    • 其实在这种情况下很难表达自己。我对图书馆的分布更感兴趣。比如debian/ubuntu,我用的是CMake/CPack生成的.deb(所以我已经用INSTALL了),但是不知道在mac里怎么弄。
    • 酷我不知道组件安装功能。另外,你是对的,packagemaker 这是使用库的方式,正如developer.apple.com/mac/library/documentation/Porting/… 中所解释的那样(我刚刚找到了链接)......不幸的是,卸载选项仍然是一个愿望
    • CPack DragnDrop 和 CPack Bundle 生成器有什么区别? (假设我的应用程序确实需要 dylibs,但还包含可执行文件、gresources、图标等..)
    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多