【问题标题】:Is a Mac OS X framework the right fit?Mac OS X 框架是否合适?
【发布时间】:2011-09-28 20:30:59
【问题描述】:

我们的项目是某种编程语言的跨平台、开源实现。除了以该语言执行程序的命令行可执行文件外,它还提供了一个 C++ API 和库,用户可以使用它来添加自己的模块。

我正在尝试决定是否值得(或者即使它甚至有意义)提供我们的东西作为 Mac OS X 的框架(通过.pkg 文件)。如果我们什么都不做,那么就会有仍然是 make install 目标,它会将所有内容放入 /usr/local/include/usr/local/lib 等中。

我们的实现需要一些第三方库,例如 Xerces 和 ICU。可以/应该将这些库的预构建版本视为“资源”并捆绑在框架中吗?这是分发第 3 方库的合法方式吗?

【问题讨论】:

    标签: macos gcc frameworks


    【解决方案1】:

    我喜欢框架,它们使事情保持整洁。一个框架可以让你更容易在 Xcode 中使用你的库,但它也便于命令行使用(-framework MyCoolLang)。然后,人们可以#include 并使用您的标题,而无需设置单独的搜索路径。

    这意味着您应该在其他平台上也将您的标头放在/usr/local/include/MyCoolLang/{foo,bar}.h 中,以便人们可以使用相同的相对包含路径。无论如何你都应该这样做,因为它更整洁。

    如果您必须支持没有子目录的包含路径,例如 #include ,和/或如果您想在从命令行编译时支持 -lMyCoolLang 等传统编译器选项(作为 -framework 的替代方案),您可以符号链接头文件和/或库到 /usr/local/lib 并包含。这仍然比在那里转储实际文件要好,因为有人可以 ls -l /usr/include 并通过符号链接路径准确地告诉您哪些标头属于您的框架。

    【讨论】:

    • 那么第三方库呢?
    • 你可以把它们放在MyCoolLang.framework/Contents/Libraries里面。确保您的 MyCoolLang 库使用 @loader_path 引用它们(请参阅 man dyld)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2012-09-28
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多