lms*_*lms 5 unix macos xcode build
是否可以从Xcode中的构建脚本中读取预处理器宏?
在我的预编译头文件中,我定义了一个宏,如:
#define APIKEY 123abc
Run Code Online (Sandbox Code Playgroud)
在我的构建脚本中,我希望能够将此宏作为变量访问,以便我可以使用它做一些事情,例如:
echo $APIKEY > outputfile
Run Code Online (Sandbox Code Playgroud)
Chr*_*ton 10
有一种更强大的方法可以做到这一点.
执行运行脚本构建阶段时,Xcode会在一个名为的环境变量中列出项目构建设置所做的所有预处理器定义GCC_PREPROCESSOR_DEFINITIONS.
对于需要从脚本访问的定义,请在" 项目构建设置"中定义它们.如果要将这些从源代码中移出,但需要保持源代码的健壮性(例如,您还要在Xcode项目之外编译此源),您可以选择保留源定义,用#ifndef/ 包裹,#endif从而使它们成为被动默认值.
现在,检索这些作为脚本变量,只是评价的内容GCC_PREPROCESSOR_DEFINITIONS在您运行脚本建阶段,就像这样:
eval "${GCC_PREPROCESSOR_DEFINITIONS}"
Run Code Online (Sandbox Code Playgroud)
如果要确保脚本中存在默认值,则对于一个或多个特定变量,请在此评估上方定义它们.
是的,这是可能的,但是您需要搜索它所define在的头文件才能找到它。您可以使用许多实用程序来执行此操作,但grep和awk可能是最直接的,并且可以在大多数微不足道的情况下工作(如果常量是字符串常量,您可能需要更多实用程序):
#!/bin/sh
APIKEY=$(grep 'define.*APIKEY' file.h | awk '{print $3}')
Run Code Online (Sandbox Code Playgroud)