代码之家  ›  专栏  ›  技术社区  ›  stigi

如何为Mac和iPhone创建混合Xcode项目?

  •  12
  • stigi  · 技术社区  · 16 年前

    我正在做一个包含两个目标的项目。一个用于构建用于Mac开发的框架,另一个用于创建用于iPhone开发的静态库。

    在公共代码中,在平台之间定义ifdef是没有问题的,但是我不能正确地获取目标和依赖关系。

    第一个问题是,要使用哪个基本SDK? 例如,如果我使用mac 10.5,我就不能包含uikit框架(它被标记为红色,如果我扩展它,就不会显示头文件)。即使与之相对的目标是为iPhone操作系统构建的。

    另一个问题是,foundation.framework或类似security.framework的东西怎么样?如何处理它们,因为我只能包含其中一个版本(Mac或iPhone SDK)…

    有人给我提建议吗? 我希望有一个干净的项目结构和两个目标完全相同的代码库…配置是否可行?

    谢谢!

    4 回复  |  直到 11 年前
        1
  •  5
  •   stigi    15 年前

    只想让你知道:

    最后我有了一个针对不同平台的不同目标的项目。 但我没有在目标本身中包含我所依赖的框架,而是将它们添加到 其他链接器标志 生成设置:

    -framework Foundation -framework Security
    

    你可以在我做的项目中查出来 github .

        2
  •  3
  •   Mo.    16 年前

    可能最简单的(就你必须做的事情而言)方法是两个项目(如果你愿意,你可以将其总结为虚拟伞项目的子项目),它们使用相同的资源集,一个针对Mac OS X,另一个针对iPhone OS。

    或者,您是否不能在同一个项目中创建两个单独的目标,并从__get info_窗口的_选项卡中更改__base sdk_157;?我前面没有xcode可以检查,但我想它会让你这样做。

    (当然,无论采用哪种方法,您都可以添加第三个目标:模拟器的静态库,这在测试时都很有用!)

        3
  •  3
  •   Colin Barrett    15 年前

    其实没那么糟。只需创建适当类型的第二个目标,然后更改“基本SDK”构建设置。然后确保添加所有必要的文件。如果要同时生成这两个目标,请创建聚合目标。有关实际示例,请参阅我的项目 SSPromise .

        4
  •  -3
  •   Henrik Hartz    16 年前

    你不能用 PIMPL idiom ?和/或两者都有一个共同的头,但基于目标体系结构或SDK使用不同的实现文件?