xcode info.plist构建变量$ {PRODUCT_NAME:rfc1034identifier}似乎完全没有记录?

时间:2011-03-02 21:05:30

标签: iphone xcode

我正在尝试查找描述构造${PRODUCT_NAME:rfc1034identifier}建议的语法和可能性的文档。显然,这会变成产品名称的某个版本,但描述如何的文档在哪里?我刚刚浏览了整个/ Developer目录,没有任何用处。

我不是在寻找对这个特定变量发生什么变化的狭义定义,我想知道所有这样的修饰符,如rfc1034identifier < / p>

4 个答案:

答案 0 :(得分:31)

使用strings我还挖出了以下与:rfc1034identifier相关的内容:

  • :quote - 在空格之前添加反斜杠(以及更多),以便在shell脚本中使用
  • :identifier - 用下划线替换空格,斜线(和更多)
  • :rfc1034identifier - 用短划线替换空格,斜线(和更多)
  • :dir - 不知道,在某些情况下观察到./替换
  • :abs - 不知道

确切命令:

strings /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/DevToolsCore|grep '^:'

有更多的东西看起来像有趣的修饰符(例如,:char-range=%@),但我无法让它们起作用。网上只有:char-range的一个例子,它来自Xcode的崩溃日志。

有人问我们怎么知道它是修饰符规范。嗯,我们知道,因为它适用于构建设置中的多个变量。 Plist预处理器可能使用与构建系统相同的机制来解析构建变量。

Hack Saw,如果您通过该错误报告得到回复,请不要忘记告知我们: - )

答案 1 :(得分:11)

看起来你也可以堆叠它们。有用的案例floating around out

com.yourcompany.${PRODUCT_NAME:rfc1034identifier:lower}

使“您的应用”的产品名称变为com.yourcompany.your-app

答案 2 :(得分:4)

$ strings /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/DevToolsCore

PRODUCTNAME
PRODUCTNAMEASIDENTIFIER
PRODUCTNAMEASRFC1034IDENTIFIER
PRODUCTNAMEASXML

似乎有:identifier,:rfc1034identifier和:xml修饰符。但除此之外我不知道。

答案 3 :(得分:0)

最后,苹果公司就此制作了一些文档。截止到目前,这位于Xcode手册的“文本宏”部分。

文本宏格式参考

文本宏可以包含任何有效的unicode文本。它还可以包含其他文本宏。

包括其他文本宏 要包含另一个文本宏,请在宏名称前后添加三个下划线(_)字符:

___<MacroName>___

修改文本宏扩展 您可以通过添加一个或多个修饰符来修改文本宏的最终扩展。将修饰符添加到文本宏,方法是在宏的末尾放置一个冒号(:),后跟修饰符。通过用逗号(,)分隔每个修饰符来添加多个修饰符。

<MACRO>:<modifier>[,<modifier>]…

例如,以下宏将从FILENAME宏中删除路径扩展名:

FILENAME:deletingPathExtension

要将上面修改后的宏转换为有效的C标识符,请添加标识符宏:

FILENAME:deletingPathExtension,identifier

修饰符

bundleIdentifier :用连字符(-)替换所有非捆绑标识符字符。

deletingLastPathComponent :从扩展字符串中删除最后一个路径组件。

deletingPathExtension :从扩展字符串中删除所有路径扩展。

deletingTrailingDot :删除所有尾随点(。)。

标识符:用下划线(_)替换所有非C标识符字符。

lastPathComponent :仅返回扩展字符串的最后一个路径部分。

pathExtension :返回扩展字符串的路径扩展名。

rfc1034Identifier :用连字符(-)替换所有非rfc1034标识符字符。

xml :用相应的转义字符串替换特殊的xml字符。例如,将小于(<)替换为&lt;

文字宏

文本宏参考

版权 使用项目团队名称的版权字符串。如果没有公司名称,则该字符串为空白。

该示例显示了将公司设置为“ Apple”时的版权字符串。

版权所有©2018 Apple。保留所有权利。

日期 当前日期。

DEFAULTTOOLCHAINSWIFTVERSION 默认工具链使用的Swift版本。

FILEBASENAME 当前文件的名称,不带任何扩展名。

FILEBASENAMEASIDENTIFIER 编码为C标识符的当前文件的名称。

FILEHEADER 文本放置在每个新文本文件的顶部。

文件名 当前文件的全名。

FULLUSERNAME 当前macOS用户的全名。

NSHUMANREADABLECOPYRIGHTPLIST macOS应用程序目标的Info.plist文件中人类可读版权字符串的条目。宏的值必须包括plist的XML分隔符。例如,有效值为:

'''
    <key>NSHumanReadableCopyright</key>

    <string>Copyright © 2018 Apple, Inc. All rights reserved.</string>


'''

请注意,该值包括换行符。

组织名称 在整个项目文件夹中以样板文字显示的组织名称。您项目中的组织名称与您在App Store Connect中输入的组织名称不同。

PACKAGENAME 当前方案构建的软件包的名称。

PACKAGENAMEASIDENTIFIER 当前方案构建的程序包名称的C标识符编码版本。

PRODUCTNAME 当前方案构建的产品的应用名称。

PROJECTNAME 当前项目的名称。

RUNNINGMACOSVERSION 运行Xcode的macOS版本。

TARGETNAME 当前目标的名称。

时间 当前时间。

USERNAME 当前macOS用户的登录名。

UUID 返回一个唯一的ID。第一次使用此宏时,它将在返回ID之前生成ID。您可以使用此宏通过使用修饰符来创建多个唯一ID。每个修改器都返回该修改器唯一的ID。例如,第一次使用UUID:firstPurpose修饰符时,宏会生成并返回该宏和修饰符组合的唯一ID。 UUID:firstPurpose修饰符的后续使用将返回相同的ID。添加UUID:secondPurpose修饰符会生成并返回一个UUID:secondPurpose唯一的ID,该ID与UUID:firstPurpose的ID不同。

WORKSPACENAME 当前工作空间的名称。如果只有一个项目打开,则为当前项目的名称。

YEAR 当前年份为四位数。