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

Build os x tool as part of iOS project without breaking xcodebuild archive?

每次构建 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. 您可以将任意数量的目标(iOS 应用程序、静态库、控制台应用程序等)添加到同一个项目中。
  2. 然后你应该创建另一个目标 -
  3. 那么你有以下选择:

3.1 转到聚合目标的方案设置并添加其他目标: 您可以在其中指定要对特定目标执行的操作

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

如果您的目标不直接相互依赖(据我了解),选项 w/o 聚合目标是更可取的实现方式。 This is the main purpose for schemes.

A scheme is a collection of settings that specify which targets to build, what build configuration to use, and the executable environment to use when the product specified by the target is launched. When you open an existing project (or create a new one), Xcode automatically creates a scheme for each target.