${EXECUTABLE_NAME}和${PRODUCT_NAME}是在哪里定义的?涉及IT技术。

122

我该在哪里找到有关如何修改以下内容的信息:

  • ${EXECUTABLE_NAME}
  • ${PRODUCT_NAME}

这些只在 .plist 文件中显示,但实际值在哪里。

如果我们可以直接修改 .plist 中的任何内容,为什么还需要这些。

我是新手,所以我不理解这些,我也查看了苹果信息属性列表键参考,但没有找到这些 ${} 值。


值得注意的是,如果您使用 xcconfig,则可以通过命令行工具更改这些值。也就是说,您可以将它们设置为任何您想要的值,然后归档并发布构建。 - mfaani
4个回答

200
“PRODUCT_NAME” 在目标的 “Build Settings” 中的 “Packaging” 部分中定义。默认情况下,它与您的项目名称相同。

screenshot

编辑:

默认情况下,PRODUCT_NAME 是目标的名称(在本例中为 MyDemoApp)。而 EXECUTABLE_NAME 则是以下内容的连接:

$EXECUTABLE_PREFIX$PRODUCT_NAME$EXECUTABLE_SUFFIX

有关详细信息,请参见 EXECUTABLE_NAME 的参考资料。

更新

新的参考资料可以在此处找到 http://help.apple.com/xcode/mac/8.3/#/itcaec37c2a6

EXECUTABLE_NAME
指定目标生成的二进制文件的名称。


糟糕,我的“产品名称”的默认值是“$(TARGET_NAME)”,尽管它与我的项目名称相同。 - Kjuly
16
$(TARGET_NAME) 存储在哪里? - user4951
2
@Jim Thio:这是您的目标名称,您可以通过在上面的视图中单击目标来更改它。默认情况下,目标与项目具有相同的名称,因此在我的示例中,目标的名称也是“MyDemoApp”。 - Besi
@Besi,当项目没有在Xcode中打开时,我们能否访问buildSettings文件以手动进行一些更改,就像在Android中的build.xml一样? - Prince Kumar Sharma
@Hercules,请查看你的-Info.plist文件,其中一些值是在里面定义的,因此可以在不打开Xcode的情况下更改。 - Besi
你在哪里看到 EXECUTABLE_NAME 是由 $EXECUTABLE_PREFIX$PRODUCT_NAME$EXECUTABLE_SUFFIX 进行连接的? - CyberMew

2

我认为$代表了变量productName和executableName,就像在Unix中使用$一样。这些变量设置在应用程序的构建设置中。因此,您不应直接在plist文件中更改产品名称。相反,请转到构建设置,搜索产品名称并更改它。


1
在构建设置中,我只能看到产品名称,其他可执行变量不在其中。 - Hazel Sophie
值得注意的是,如果您使用 xcconfig,则可以通过命令行工具更改这些值。也就是说,您可以将它们设置为任何您想要的值,然后归档并发布构建。 - mfaani

1

关于如何定义${PRODUCT_NAME}的顺序:

  1. 它最初默认为目标的名称:$(TARGET_NAME)
  2. 您可以在“构建设置”中搜索产品名称以重新设置它

注意:如果任何值是基于${PRODUCTS_NAME}派生的,并且您将其更改为some-constant-value,则它将不再是计算值。

例如,如果您将CFBundleName的值从其默认值${PRODUCT_NAME}更改为诸如My cool App之类的内容,则应用程序在Springboard上的名称将显示为“My cool App”。 它将不再显示为“您的目标名称”


1

Xcode ${<variable_name>} 语法

Xcode 变量可以在不同的级别上定义,使用Resolved。您可以使用 Build Settings -> Levels 选项卡进行管理。

enter image description here

所有变量都在Build Settings中列出。此外,每个设置都有自己的声明。
Product Name - PRODUCT_NAME

这些设置被保存在buildSettings块中。
<project_name>.xcodeproj/project.pbxproj

你可以使用搜索视图来查找任何变量,使用Help Inspector来查找声明和其他有用的信息。 一些设置在Xcode中没有公开。
EXECUTABLE_NAME

但是您可以使用用户自定义设置来获取或覆盖该值

reader_EXECUTABLE_NAME = $(EXECUTABLE_NAME)

EXECUTABLE_NAME = $EXECUTABLE_PREFIX$PRODUCT_NAME$EXECUTABLE_SUFFIX

[SWIFT_MODULE_NAME, PRODUCT_MODULE_NAME, PRODUCT_NAME, EXECUTABLE_NAME]


这里是一个链接,其中包括以下内容:SWIFT_MODULE_NAME、PRODUCT_MODULE_NAME、PRODUCT_NAME和EXECUTABLE_NAME。

[TARGET_NAME]

这是另一个链接,其中包括TARGET_NAME。

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