2010-06-03 74 views
2

我有一个项目,其工件是两个动态库,例如libX.dyliblibY.dylib(或.so适用于Linux发行版)。没有可执行文件。使用CMake/Cpack在Mac OSX中安装(分发)动态库的最佳方式是什么?

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

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

我的理想场景是安装成捆绑软件或debian/debian的deb文件。

感谢您的帮助

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

这就是为什么我想要一个.deb,.tar.gz,捆绑或任何。

回答

2

这取决于您是否要以UNIX-y方式安装它(这完全是一件好事,实际上我自己喜欢作为Mac用户),或者如果您想将它安装为Mac OS X框架。

要安装该库中的UNIX-Y的方式,你可以使用:

INSTALL(TARGETS target1 target2 DESTINATION lib) 

在上面,与导致libX.dylib和libY.dylib作为目标的名称代替target1target2生成(即,您在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开发人员工具时,PackageMaker安装在Mac OS X上。要将“.app”软件包打包到“.dmg”中,您可以使用Mac OS X磁盘实用程序应用程序或其相关的命令行工具。

+0

事实上,在这种情况下很难表达自己。我对图书馆的分布更感兴趣。例如,对于debian/ubuntu,我使用由CMake/CPack生成的.deb(因此我已经使用'INSTALL'),但我不知道在mac中做什么。 – YuppieNetworking 2010-06-03 17:46:34

+1

酷我不知道组件安装功能。另外,你是对的,包装制造商是去图书馆的方式,正如http://developer.apple.com/mac/library/documentation/Porting/Conceptual/PortingUnix/distributing/distibuting.html中所解释的(我刚刚找到链接 )...不幸的是,卸载选项仍然是一个愿望 – YuppieNetworking 2010-06-03 22:52:52

相关问题