在不破坏xcodebuild存档的情况下构建os x工具作为iOS项目的一部分?

时间:2015-03-11 20:21:45

标签: ios xcodebuild

每次我构建我的iOS项目时,我都想构建一些OS X项目。这些是命令行工具。我不在乎它们是否包含在存档中,我只是想确保它们每次都能正确编译。

它们是用于访问相同库的特定任务的小命令行工具。在过去,我建造这些的次数要少得多,因此他们遭受了代码腐烂。我想在每次构建iOS项目时构建它们,即使我只是构建在Xcode中。

为此,我尝试将项目拖入我的iOS项目并将其设置为依赖项。

这在IDE中工作正常,但是当我尝试通过xcodebuild构建时:

xcrun xcodebuild -sdk iphoneos -workspace AppName.xcworkspace \
    -scheme AppName archive

我收到的错误如下:

=== BUILD TARGET dslfi OF PROJECT dslfi WITH CONFIGURATION Release ===

Check dependencies
target specifies product type 'com.apple.product-type.tool', but there's no such
product type for the 'iphoneos' platform

** ARCHIVE FAILED **

The following build commands failed:
    Check dependencies
(1 failure)

有没有办法在每次构建时继续构建这些内容,同时仍然满足xcodebuild

1 个答案:

答案 0 :(得分:1)

  1. 您可以将任意数量的目标(iOS应用程序,静态库,contole应用程序等)添加到同一个项目中。
  2. 然后你应该创建另一个目标 - *aggregate* target
  3. 然后你有选择:
  4. 3.1转到聚合目标的方案设置并添加其他目标: targets您可以在其中指定要对特定目标执行的操作

    3.2您可以选择聚合目标并转到构建设置并添加其他目标作为此目标的依赖项。

    选项3.1似乎是您需要的选项:您可以根据需要添加任意数量的目标。您可以指定另一个运行目标。 所以你会有类似的东西:

    targets:
    target 1 - iOS app
    target 2 - other app
    target 3 - other app
    target 4 - aggregate target
    
    scheme configuration for target 4
    build section:
     target 1
     target 2
     target 3
    run section:
     executable: target 1 (iOS app)
    

    完成此操作后,您可以使用您的方案进行构建 xcodebuild -scheme your_scheme [...other options...] archive


    <强>更新

    您可以跳过创建聚合目标。 您可以直接创建新方案和所需的配置,而不涉及聚合目标。

    更新2

    确保分享您的方案,以便能够将其保留在源代码管理中。

    更新3

    如果你的目标不是直接相互依赖(据我所知),那么没有聚合目标的选项是实现这一目标的更好方法。 This is the main purpose for schemes.

      

    方案是一组设置,用于指定要指定的目标   构建,使用什么构建配置以及可执行环境   在目标指定的产品启动时使用。当你   打开现有项目(或创建一个新项目),自动Xcode   为每个目标创建一个方案。