gpt4 book ai didi

xcode - 从 Xcode 配置(例如发布、调试)将 POD 规范属性关联到不同的build设置

转载 作者:行者123 更新时间:2023-12-04 12:32:06 25 4
gpt4 key购买 nike

我正在尝试为现有的库项目创建 POD 规范。

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

例如:

对于“调试”配置:

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'
end

configuration :Release do
spec.compiler_flags = '-DNDEBUG -DNS_BLOCK_ASSERTIONS'
end

然而,这是猜测。

最佳答案

更新

我太快跳到这个解决方案了,实际上,这个不行 .

虽然 Conditional Variable Assignment xcconfig 语法确实为体系结构和平台有条件地设置了一个值,但它的配置方式不同。
由于这种差异,该解决方案与 CocoaPods 的 xcconfig 继承机制不符。

this SO question 的 OP显然,我也无法成功使用条件变量分配在 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 中所述。 ,其中生成的build设置将以某种方式在 Pod.xcconfig 中定义多次。

关于xcode - 从 Xcode 配置(例如发布、调试)将 POD 规范属性关联到不同的build设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com