包括一个框架而不将其嵌入应用程序包中

时间:2011-12-06 23:31:48

标签: xcode macos frameworks

我仍然不能100%肯定框架链接过程,但是从我在这里看到的之前没有人问过类似的问题,也许是因为这可能是一个愚蠢的问题,但我会放手一搏反正。

在我目前的X-Code项目中,我使用的是自定义框架,例如example.framework。目前,据我所知,为了使程序能够与框架一起运行,我需要将它放在/ Library / Frameworks中,或者我需要将它复制到构建中的bundle资源中相。

是否有人知道以一种方式将框架添加到项目中以便将其编译为可执行文件,因此我不必将原始框架包含在应用程序中?我宁愿不分享整个框架......

提前谢谢!任何建议也欢迎!

1 个答案:

答案 0 :(得分:1)

Mac OS X框架基本上是一个共享库,这意味着它是一个单独的二进制文件。

基本上,当你的主可执行文件启动时,操作系统会将framework / dylib加载到内存中,并映射符号,这样你的主要可执行文件就可以访问它们。

请注意,框架/ dylib(无论是否捆绑到应用程序中)不需要包含头文件,因为这些只在编译时需要。

使用Xcode,您可以在将框架复制到其安装目录时实际决定是否包含头文件(请参阅构建阶段)。

enter image description here

如果你不复制头文件,人们将无法使用你的framework / dylib(当然,除非他们对它进行反向工程)。

如果您仍然认为某个框架不适合您的需求,您可能需要创建一个静态库。

静态库是一个单独的目标文件(通常是.a),在链接时与你的最终二进制文件“包含”。

这样,您只有一个二进制文件,其中包含来自库和项目的代码。