Ios Xcode SwiftGen:在具有多个目标的项目中生成失败

Ios Xcode SwiftGen:在具有多个目标的项目中生成失败,ios,swift,xcode,cocoapods,Ios,Swift,Xcode,Cocoapods,使用CoCoapod和多个目标时,我应该如何配置SwiftGen 我有一个有两个目标(MyProject和MyProject Dev)的项目,其中SwiftGen与Cocoapods集成 我可以毫无问题地构建第一个目标。但是,“Dev”目标总是失败。脚本阶段是构建阶段中的最后一步,但是更早或更晚运行它似乎没有什么区别 关于失败,我观察到以下几点: 生成的.swift文件有一个import语句“import MyProject”,它不应该在那里 “模块[MyProject]中没有名为[Class

使用CoCoapod和多个目标时,我应该如何配置SwiftGen

我有一个有两个目标(MyProject和MyProject Dev)的项目,其中SwiftGen与Cocoapods集成

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

关于失败,我观察到以下几点:

  • 生成的.swift文件有一个import语句“import MyProject”,它不应该在那里
  • “模块[MyProject]中没有名为[ClassName]的类型”或“没有此类模块[MyProject]”
我使用的SwiftGen版本是5.2.1 Xcode 9.2,面向iOS 10.0

SwiftGen从第5版开始需要一个配置文件,因此我已按如下方式设置了一个配置文件:

output_paths: Sources/Generated
storyboards:
  - paths: MyProject/Storyboards/Base.lproj
    templateName: swift4
    output: MyProject/Storyboards/Storyboards.swift
    params:
      ignoreTargetModule: true
到目前为止,我查阅了文档和以下问题:

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

清理项目、生成文件夹和删除派生数据无效。我假设我可能在配置设置中遗漏了一些东西,但我看不出会是什么


第一个问题在这里,所以道歉,如果我错过了什么,将很高兴编辑

对于将此称为解决方案犹豫不决,它更像是一种变通方法,但以下方法至少允许构建和运行项目

  • 从“开发”目标中删除SwiftGen脚本阶段
  • 使用包含SwiftGen的主方案构建项目,以生成所有必要的对象和构造
  • 切换到Dev scheme并运行项目
SwiftGen创建的Strings.swift文件链接到两个目标,因此即使在一个方案中运行脚本,该文件中的资源也可用于常规目标和开发目标


希望这对别人有帮助

我在生成
情节提要
文件时遇到了同样的问题。尝试修改您的配置文件:

参数:
ignoreTargetModule:真
模块:


希望能有所帮助。

太好了。这实际上彻底解决了问题。缺少的部分是将“模块:”添加到参数列表中,然后它像一个符咒一样工作。非常感谢您提供答案感谢@GhostCat提供您的反馈!可能是的,我应该再看一遍介绍:)只是不清楚我下一步该做什么,我应该改变我的决定(如果可能的话)还是下次更小心一点?:)我很欣赏这场快速而友好的回归。在这种情况下,呵呵,OP实际上改进了这个问题,所以没什么可做的。所以:以后要更加小心。记住:当OP必须编辑问题以使其具有可回答性时,那么投票是“接近mcve”或其他什么。投票编辑意味着:你、我、任何人都可以编辑和修正问题;-)