将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)

将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试),第1张

概述我正在尝试为现有的库项目创建POD规范. 在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏(例如:“Debug”和“Release”) 例如: 对于“调试”配置: GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 对于“发布”配置: GCC_PREPROCESSOR_DEFINITIONS = NDEBUG NS_BLOCK_ASSERTIONS 如何 我正在尝试为现有的库项目创建POD规范.

在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏(例如:“DeBUG”和“Release”)

例如:

对于“调试”配置:

GCC_PREPROCESSOR_DEFinitioNS = DEBUG=1

对于“发布”配置:

GCC_PREPROCESSOR_DEFinitioNS = NDEBUG NS_BLOCK_ASSERTIONS

如何将这些设置映射到相应的POD规范?

例如:

spec.compiler_flags = '-DDEBUG=1'

spec.compiler_flags = '-DNDEBUG -DNS_BLOCK_ASSERTIONS'

不幸的是,官方文档通常更令人困惑和不清楚,而不是真正有用:

Build settings

Build settings

In this group are Listed the attributes related to the configuration of the build environment that should be used to build the library.

If not defined in a subspec the attributes of this group inherit the value of the parent.

Examples:

spec.compiler_flags = ‘-DOS_OBJECT_USE_OBJC=0’,‘-Wno-format’

直观地说,我会做这样的事情:

configuration :DeBUG do    spec.compiler_flags = '-DDEBUG=1'endconfiguration :Release do    spec.compiler_flags = '-DNDEBUG -DNS_BLOCK_ASSERTIONS'end

然而,这是猜测.

解决方法 更新

我太急于跳到这个解决方案,实际上,这个不起作用.

虽然Conditional Variable Assignment的xcconfig语法确实为架构和平台设置了有条件的值,但它在配置方面的工作方式不同.
由于这种差异,这个解决方案与CocoaPods的xcconfig继承机制并不相符.

很明显,也就是我,我不能成功地在podspec中使用条件变量赋值进行配置.

使用Conditional Variable Assignment的xcconfig语法,您可以实现:

s.pod_target_xcconfig = {    'GCC_PREPROCESSOR_DEFinitioNS[config=DeBUG]' => '-DDEBUG=1','GCC_PREPROCESSOR_DEFinitioNS[config=Release]' => '-DNDEBUG -DNS_BLOCK_ASSERTIONS'}

然而,如another SO question所述,有一个小的副作用,其中生成的构建设置将以某种方式在Pod.xcconfig中定义多次.

总结

以上是内存溢出为你收集整理的将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)全部内容,希望文章能够帮你解决将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1100552.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存