首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcodebuild命令行忽略GCC_PREPROCESSOR_DEFINITIONS

xcodebuild命令行忽略GCC_PREPROCESSOR_DEFINITIONS
EN

Stack Overflow用户
提问于 2012-03-23 00:11:14
回答 1查看 3.2K关注 0票数 8

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

我试过了:

代码语言:javascript
复制
xcodebuild -scheme myscheme \
           -configuration "Archive" \
           -sdk "iphoneos5.1" 
           archive \
           CONFIGURATION_BUILD_DIR=../build \
           GCC_PREPROCESSOR_DEFINITIONS=ADHOC

但是由于没有使用预处理器,我得到了一个编译错误:

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

但它显示在脚本的开头

代码语言:javascript
复制
Build settings from command line:
        CONFIGURATION_BUILD_DIR = ../build
        GCC_PREPROCESSOR_DEFINITIONS = ADHOC
        SDKROOT = iphoneos5.1

导致编译错误的代码如下:

代码语言:javascript
复制
#ifdef ADHOC
NSUInteger toto = 0;
#endif

但是我得到了一个totouse of undeclared identifier错误

ps :如果我在Xcode中定义了预处理器宏,那么这些值就会被使用,我的值就会被覆盖,然后归档就会完成。但我确实想基于不同的预处理器定义构建几个版本(对我来说,这听起来比创建新的构建配置或方案更好)

EN

回答 1

Stack Overflow用户

发布于 2013-02-27 17:55:38

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

代码语言:javascript
复制
GCC_PREPROCESSOR_DEFINITIONS='$value ${e}', 

它不起作用,但是

代码语言:javascript
复制
GCC_PREPROCESSOR_DEFINITIONS="${e}" 

很管用。

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

代码语言:javascript
复制
environments=("TEST1" "TEST2" "TEST3" "TEST4" "TEST5" "PROD")
for e in "${environments[@]}"
   do
....... commands
   done

如果我使用

代码语言:javascript
复制
GCC_PREPROCESSOR_DEFINITIONS='$value ${e}'

然后我就得用像这样的

代码语言:javascript
复制
GCC_PREPROCESSOR_DEFINITIONS='$value ADHOC=1'

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9826236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档