6

是否可以从 Xcode 中的构建脚本中读取预处理器宏?

在我的预编译头文件中,我定义了一个宏,如:

#define APIKEY 123abc

在我的构建脚本中,我想访问这个宏作为一个变量,以便我可以用它做一些事情,例如:

echo $APIKEY > outputfile
4

2 回答 2

10

有一种更强大的方法可以做到这一点。

在执行运行脚本构建阶段时,Xcode 会在一个名为GCC_PREPROCESSOR_DEFINITIONS.

对于需要从脚本访问的定义,请在Project Build Settings中定义它们。如果您将这些从源代码中移出,但需要保持源代码的稳健性(例如,您也在 Xcode 项目之外编译此源代码),您可以选择保留源代码定义,用#ifndef/包裹#endif- 从而使它们成为被动默认值。

现在,要将这些作为脚本变量检索,只需评估Run Script构建阶段的内容,如下所示GCC_PREPROCESSOR_DEFINITIONS

eval "${GCC_PREPROCESSOR_DEFINITIONS}"

如果您想确保脚本中有一个默认值,对于一个或多个特定变量,请在此评估之上定义它们。

于 2014-08-14T05:46:57.913 回答
1

是的,这是可能的,但是您需要搜索它所在的头文件define才能找到它。您可以使用许多实用程序来做到这一点,但这可能是最直接的,并且可以在大多数琐碎的情况下工作(如果常量是字符串常量,您可能需要更多)grepawk

#!/bin/sh

APIKEY=$(grep 'define.*APIKEY' file.h | awk '{print $3}')
于 2013-01-31T09:09:56.513 回答