繁体   English   中英

Xcode SwiftGen:在具有多个目标的项目中构建失败

[英]Xcode SwiftGen: build fails in project with multiple targets

使用Cocoapods和多个目标时应如何配置SwiftGen?

我有一个具有两个目标(MyProject和MyProject Dev)的项目,该项目的SwiftGen与Cocoapods集成在一起。

我可以毫无问题地建立第一个目标。 但是,“ Dev”目标始终会失败。 脚本阶段是构建阶段的最后一步,但是早些或晚一点运行似乎没有什么区别。

在失败时,我观察到以下内容:

  • 生成的.swift文件具有导入语句“ import MyProject”,该语句不应存在
  • '模块[MyProject]中没有名为[ClassName]的类型”或'模块[MyProject]中没有这样的模块'

我正在使用的SwiftGen版本是5.2.1 Xcode 9.2,面向iOS 10.0

从版本5开始的SwiftGen需要一个配置文件,因此我将其设置如下:

output_paths: Sources/Generated
storyboards:
  - paths: MyProject/Storyboards/Base.lproj
    templateName: swift4
    output: MyProject/Storyboards/Storyboards.swift
    params:
      ignoreTargetModule: true

到目前为止,我已经查看了文档和以下问题: https : //github.com/SwiftGen/SwiftGen/issues/273

但是,不同之处在于我使用的是另一种类型的SG安装,并且我的项目无法构建(而不是简单地不生成任何资源)

清理项目,构建文件夹和删除派生数据无效。 我假设我可能错过了配置设置程序中的某些内容,但是我看不到那是什么。

这里的第一个问题,如果我错过了什么,抱歉,我们将很高兴进行编辑。

我在生成Storyboard文件时遇到了同样的问题。 尝试修改您的配置文件: params: ignoreTargetModule: true module: <YOUR_PROJECT_NAME>

希望它会有所帮助。

犹豫是否将其称为解决方案,更多的是解决方法,但是以下方法至少允许构建和运行项目。

  • 从“ Dev”目标中删除SwiftGen脚本阶段
  • 使用包含SwiftGen的主要方案构建项目,以生成所有必要的对象和构造
  • 切换到开发方案并运行项目。

SwiftGen创建的Strings.swift文件链接到两个目标,因此,即使在一个方案中运行脚本后,该文件中的资源也可用于常规目标和Dev目标。

希望这对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM