Xcode 预处理宏

3

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

SRC_ROOT=${SRC_ROOT}

但它没有起作用。

1个回答

20
在Xcode构建设置中,您实际上并不是引用一个环境变量值。相反,您正在引用一个“构建设置”值。其语法是Makefile风格的$(SETTING_NAME),而不是您在上面使用的shell风格的${SETTING_NAME}
因此,您需要添加:
SRC_ROOT="$(SRCROOT)"

预处理宏添加到您的构建设置中。

如果您知道您的宏不会影响预编译前缀文件的内容,那么您应该使用 未在预编译头文件中使用的预处理宏,而不是 预处理宏。这样可以提高您的预编译前缀头文件(由pch文件定义)在项目中不同目标之间甚至不同项目之间的共享。有关此问题,《技术说明2190:加速Xcode构建》有更详细的介绍:如果在多个项目中使用相同的前缀文件名和内容,并使用相同的构建设置进行构建,则可以大大提高构建性能,因为Xcode会识别何时可以重新使用现有的预编译前缀文件。


然而,这个谜题是:如果我编辑我的iPhone应用程序的项目(而不是目标)设置,并搜索每个配置的“预处理器宏”...我会看到一个“GCC 4.2 - 预处理”部分和“预处理器宏”等等,适用于Ad-Hoc、发布和分发配置...但对于调试和分析器配置没有任何内容-尽管后两者确实有三个用户定义的设置:GCC_C_LANGUAGE_STANDARD(c99)、GCC_WARN_ABOUT_RETURN_TYPE(YES)和GCC_WARN_UNUSED_VARIABLE(YES)。 - Joe D'Andrea
请注意,如果您在方案范围内的预构建操作中设置环境变量,则它将毫无帮助,因为它是在子shell中定义的,因此不会在构建过程中考虑到它。 - DrMickeyLauer
现在我该如何在我的代码中使用那个值,例如只是将那个值打印到调试窗口中? - daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接