Xcode在许多地方包括Info.plists提供使用$(BUILD_SETTING_NAME) 或者 ${BUILD_SETTING_NAME} 语法更改build settings值的能力,其他build setting值,和.xcconfig文件。这些替换还能以各种方式添加运算转换这些值,你可能在项目模板中包含的.plist中见过其中的一个信息:
com.company.$(PRODUCT_NAME:rfc1034identifier)
build setting中的PRODUCT_NAME值被转换成了适应于反向DNS CFBundleIdentifier所使用的格式。如果PRODUCT_NAME是“Whatever App”产生的字符串是“com.company.Whatever-App”。
这些转换很有用但不被记录,所以这有一个可用操作的列表和他们所做的事的列表:
| 操作符 | 返回 |
|---|---|
| identifier | 适合在源代码中使用的C 标识符表示形式。 |
| c99extidentifier | 类似 identifier, 但支持C99允许的扩展字符。在Xcode 6中添加。 |
| rfc1034identifier |
适合在 DNS 名称中使用的表示形式。
|
| quote | 适合用于作为shell参数的表示形式。 |
| lower |
小写的表示形式。
|
| upper |
大写的表示形式。
|
| standardizepath | 当于在字符串上调用 stringByStandardizingPath |
| base | 一个路径的基名称 - 删除任何扩展名的最后一个路径组件 |
| dir | 目录路径的一部分。 |
| file | 文件路径的一部分。 |
| suffix |
扩展的路径包括 '.' 分隔符。
|
注意,这些操作符可以混合链接使用,所以你可以这样做
$(PRODUCT_NAME:lower:rfc1034identifier) 或者 $(CONFIGURATION:upper:identifier).
最后,这的确是一个被忽略的知识点!
原文 http://codeworkshop.net/posts/xcode-build-setting-transformations