【问题标题】:xcodebuild command line ignoring GCC_PREPROCESSOR_DEFINITIONSxcodebuild 命令行忽略 GCC_PREPROCESSOR_DEFINITIONS
【发布时间】:2023-03-13 02:00:01
【问题描述】:

我正在尝试使用不同的预处理宏启动 xcodebuild。

我试过了:

xcodebuild -scheme myscheme \
           -configuration "Archive" \
           -sdk "iphoneos5.1" 
           archive \
           CONFIGURATION_BUILD_DIR=../build \
           GCC_PREPROCESSOR_DEFINITIONS=ADHOC

但由于未使用预处理器,导致编译错误:

我用编译命令的 -D 标志看不到它

但它显示在脚本的开头

Build settings from command line:
        CONFIGURATION_BUILD_DIR = ../build
        GCC_PREPROCESSOR_DEFINITIONS = ADHOC
        SDKROOT = iphoneos5.1

编译错误的源代码是:

#ifdef ADHOC
NSUInteger toto = 0;
#endif

但我收到totouse of undeclared identifier 错误

ps:如果我确实在 Xcode 中定义了预处理器宏,则使用这些值,我的值被覆盖,并且归档完成。但我确实想根据不同的预处理器定义进行多个构建(这听起来比创建新的构建配置或方案更好)

【问题讨论】:

  • 它似乎对我有用。您能否提供一个演示该问题的示例项目?
  • 顺便说一句,我不同意预处理器定义是这里最好的方法。它们本质上比替代品更受限制。您是否考虑过使用一种架构、一种配置但有多个目标?
  • 我已经在一个项目中遇到了多个目标并且讨厌它:在您将新代码添加到项目中时,有太多复选框无法检查。但也许在这里有意义。
  • 您使用的是什么版本的 Xcode? (我的是 4.3.1 - 构建版本 4E1019)。我会尽快创建一个小项目来演示这个问题......
  • 我使用的 Xcode 版本和你一样。

标签: ios xcode4 xcodebuild xcode4.3


【解决方案1】:

我必须使用双引号并删除 $value。 我有,

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}', 

这没用,但是

GCC_PREPROCESSOR_DEFINITIONS="${e}" 

有效。

其中,e 是循环内的变量,

environments=("TEST1" "TEST2" "TEST3" "TEST4" "TEST5" "PROD")
for e in "${environments[@]}"
   do
....... commands
   done

如果我使用

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}'

那我得用like,

GCC_PREPROCESSOR_DEFINITIONS='$value ADHOC=1'

这在构建脚本之一中起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2018-07-11
    • 2018-06-20
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多