Xcode预处理器宏

Xcode预处理器宏,xcode,macros,preprocessor,Xcode,Macros,Preprocessor,在Xcode中,我可以在项目设置中编辑预处理器宏。我想创建一个引用环境变量的宏。基本上,我希望能够在代码中引用$SRC_ROOT。我目前在宏中拥有的是: SRC_ROOT=${SRC_ROOT} 但它不起作用。在Xcode构建设置中,您实际上并没有引用环境变量值。相反,您指的是构建设置值。其语法是Makefile样式$(SETTING\u NAME),而不是上面使用的shell样式${SETTING\u NAME} 所以你要做的是添加 SRC_ROOT="$(SRCROOT)" 到您的预处理

在Xcode中,我可以在项目设置中编辑预处理器宏。我想创建一个引用环境变量的宏。基本上,我希望能够在代码中引用$SRC_ROOT。我目前在宏中拥有的是:

SRC_ROOT=${SRC_ROOT}

但它不起作用。

在Xcode构建设置中,您实际上并没有引用环境变量值。相反,您指的是构建设置值。其语法是Makefile样式
$(SETTING\u NAME)
,而不是上面使用的shell样式
${SETTING\u NAME}

所以你要做的是添加

SRC_ROOT="$(SRCROOT)"
到您的预处理器宏生成设置

另外,如果您知道宏不会影响预编译前缀文件的内容,则应使用未在预编译头中使用的预处理器宏,而不是预处理器宏


通过这种方式,您可以改进项目中不同目标甚至不同项目之间预编译前缀头(由
pch
文件定义)的共享。详细介绍:如果您在多个项目中使用相同的前缀文件名和内容,并使用相同的构建设置进行构建,您可以显著提高构建性能,因为Xcode可以识别何时可以重复使用现有的预编译前缀文件。

但请让我猜个谜:如果我编辑iPhone应用程序的项目(非目标)设置,并在每个配置中搜索“预处理器宏”…我看到了“GCC 4.2-预处理”部分和“预处理器宏”等,用于临时、发布和分发配置…但调试和分析器配置没有任何内容-尽管后两个配置有三个用户定义的设置:GCC_C_语言_标准(c99),GCC_WARN_关于_返回_类型(是),以及GCC_WARN_未使用的_变量(是)。请注意,如果在方案范围的预构建操作中设置环境变量,那么它将不会有任何帮助,因为它是在子shell中定义的–因此在构建过程中不会考虑它。现在,我如何在代码中使用该值,例如仅在调试窗口中打印该值?