我的工作区中集成了几个框架/模块,但出现了错误。
警告构建:运行脚本生成阶段“模块名称”将在每次生成期间运行,因为它未指定任何输出。若要解决此警告,请向脚本阶段添加输出依赖项,或者通过取消选中脚本阶段中的“基于依赖项分析”将其配置为在每次生成期间运行。
我正在寻找如何解决这个问题的解决方案。
若要解决这个警告...或在指令码阶段取消核取[根据相依性分析],将它设定为在每个组建中执行。
我不想使用上面描述的解决方案,因为这将花费我的构建时间。我宁愿知道如何做下面:
...将输出依赖项添加到脚本阶段
很遗憾我没有足够的知识去做这件事。我在网上搜索了一下,没有找到任何具体的东西。
如何输出这些依赖关系?谢谢
2条答案
按热度按时间hgqdbh6s1#
请参阅script phase documentation以了解详细信息,尤其是 “为脚本指定输入和输出文件” 部分。您需要编辑构建阶段,并指定脚本将使用哪些文件作为输入(如果有)以及将生成哪些文件。
使用此信息,Xcode构建过程可以确定是否需要运行脚本阶段:如果输入文件没有改变,就根本不需要运行脚本阶段;如果运行了脚本阶段,Xcode至少知道生成了哪些输出文件,从而知道需要运行哪些依赖于这些文件的构建过程。
另请参阅Improving the Speed of Incremental Builds中的 “为自定义脚本和构建规则声明输入和输出” 部分
z31licg02#
如果你正在使用CocoaPods,你的警告大多来自它。我想出了两个临时的解决方案,通过修改Pod文件。一个永久的解决方案需要直接在CocoaPods本身修复这个问题。对于不是由CocoaPods生成的自定义运行脚本,只需取消选中“基于依存关系分析”,向Xcode表明您有意不使用输入/输出文件以确定是否应运行此脚本。
当需要的时候,在任何给定的项目〈=〉目标对上,两者都将
always_out_of_date
(也称为“Based on dependency analysis”)标志设置为true("1"
)。溶液A:在
post_integrate
挂接中完成所有操作优点:单模块、紧凑型解决方案
缺点:在运行
pod install
时,性能不如解决方案B,但老实说,这是不可察觉的。溶液B:除了修改
post_install
挂接中的pods_project
以获得稍好的性能之外,与A相同优点:技术上比解决方案A性能更高,因为它节省了一次昂贵的
xcodeproj.save
调用缺点:解决方案更分散在你的Podfile中。
运行
pod install
后,如果xcodeproj文件存储在git中,请提交对主xcodeproj所做的更改。