在Xcode构建脚本中读取预处理器宏?

时间:2013-01-31 08:51:32

标签: xcode macos unix build

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

在我预编译的标题中,我定义了一个宏,如:

#define APIKEY 123abc

在我的构建脚本中,我希望能够将此宏作为变量访问,以便我可以使用它来执行某些操作,例如:

echo $APIKEY > outputfile

2 个答案:

答案 0 :(得分:10)

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

执行运行脚本构建阶段时,Xcode会在一个名为{{1的环境变量中列出项目构建设置所做的所有预处理器定义}}

对于您需要从脚本访问的定义,请在项目构建设置中定义它们。如果您要将这些内容移出源代码,但需要保持源代码的健壮性(例如,您还要在Xcode项目之外编译此源代码),您可以选择保留源代码定义,包含GCC_PREPROCESSOR_DEFINITIONS / {{ 1}} - 从而使它们成为被动默认值。

现在,要将这些作为脚本变量检索,只需在运行脚本构建阶段评估#ifndef的内容,如下所示:

#endif

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

答案 1 :(得分:1)

是的,这是可能的,但您需要搜索头文件define进入,以便找到它。您可以使用大量实用程序来执行此操作,但grepawk可能是最直接的,并且可以在大多数琐碎的情况下工作(如果常量是字符串常量,则可能需要更多):

#!/bin/sh

APIKEY=$(grep 'define.*APIKEY' file.h | awk '{print $3}')