xcode info.plist переменная сборки $ {PRODUCT_NAME: rfc1034identifier} кажется полностью недокументированной? - PullRequest
29 голосов
/ 03 марта 2011

Я пытаюсь найти документацию, которая описывает синтаксис и возможности, предложенные конструкцией ${PRODUCT_NAME:rfc1034identifier}. Очевидно, это превращается в некоторую версию названия продукта, но где документация, которая описывает, как? Я просто выбрал весь каталог / Developer и ничего полезного не получил.

Я не ищу узкое определение того, что происходит с этой конкретной переменной, я хочу знать обо всех таких модификаторах , как rfc1034identifier.

Ответы [ 4 ]

31 голосов
/ 07 июня 2011

Используя strings, я также обнаружил следующие вещи, которые выглядят так, как будто они связаны с :rfc1034identifier:

  • :quote - добавляет обратную косую черту перед пробелами (и более) для использования в сценариях оболочки
  • :identifier - заменяет пробелы, косые черты (и более) на подчеркивания
  • :rfc1034identifier - заменяет пробелы, косые черты (и более) на тире
  • :dir - не знаю, наблюдаемый заменить на ./ в некоторых случаях
  • :abs - не знаю

Точная команда:

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

Есть еще вещи, которые выглядят как интересные модификаторы (например, :char-range=%@), но я не мог заставить их работать. В сети есть только один пример :char-range, и это из журнала сбоев для Xcode.

Кто-то спросил, откуда мы знаем, что это спецификация модификатора. Ну, мы знаем, потому что он работает с несколькими переменными в настройках сборки. Препроцессор Plist, вероятно, использует те же механизмы для разрешения переменных сборки, что и система сборки.

Hack Saw, если вы получили ответ через этот отчет об ошибке, не забудьте проинформировать нас: -)

11 голосов
/ 27 ноября 2013

Похоже, вы можете сложить их.Полезный случай , плавающий вокруг , существует

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

, так что название продукта "Ваше приложение" становится com.yourcompany.your-app.

4 голосов
/ 03 марта 2011
$ strings /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/DevToolsCore

PRODUCTNAME
PRODUCTNAMEASIDENTIFIER
PRODUCTNAMEASRFC1034IDENTIFIER
PRODUCTNAMEASXML

Кажется, что есть: идентификатор,: rfc1034identifier и: xml модификаторы.Но я понятия не имею, кроме этого.

0 голосов
/ 29 августа 2018

Наконец, Apple выпустила некоторую документацию по этому вопросу. Это находится в разделе «Текстовые макросы» руководства Xcode, начиная с этой даты.

Ссылка на текстовый формат макроса

Текстовый макрос может содержать любой допустимый текст Unicode. Он также может содержать другие текстовые макросы.

Включая другие текстовые макросы Чтобы добавить еще один текстовый макрос, добавьте три символа подчеркивания (_) до и после имени макроса:

___<MacroName>___

Изменение расширения макроса текста Вы можете изменить окончательное расширение текстового макроса, добавив один или несколько модификаторов. Добавьте модификатор к текстовому макросу, поместив двоеточие (:) в конце макроса, за которым следует модификатор. Добавьте несколько модификаторов, разделяя их запятыми (,).

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

Например, следующий макрос удалит расширение пути из макроса FILENAME:

FILENAME:deletingPathExtension

Чтобы превратить измененный макрос выше в действительный идентификатор C, добавьте макрос идентификатора:

FILENAME:deletingPathExtension,identifier

Модификаторы

bundleIdentifier : заменяет любые символы не связанного идентификатора дефисом (-).

deletingLastPathComponent : Удаляет последний компонент пути из строки расширения.

deletingPathExtension : Удаляет любое расширение пути из строки расширения.

deletingTrailingDot : Удаляет все конечные точки (.).

идентификатор : заменяет любые символы идентификатора, отличные от C, на подчеркивание (_).

lastPathComponent : возвращает только последний компонент пути строки расширения.

pathExtension : Возвращает расширение пути строки расширения.

rfc1034Identifier : заменяет любые символы-идентификаторы, отличные от rfc1034, дефисом (-).

xml : заменяет специальные символы xml соответствующей escape-строкой. Например, меньше чем (<) заменяется на <code>&lt;

ТЕКСТ МАКРОС

Текстовые ссылки на макросы

COPYRIGHT Строка авторского права, которая использует название компании команды для проекта. Если название компании отсутствует, строка будет пустой.

В этом примере показана строка авторского права, если для компании установлено значение «Apple».

Copyright © 2018 Apple. Все права защищены.

ДАТА Текущая дата.

DEFAULTTOOLCHAINSWIFTVERSION Версия Swift, используемая для набора инструментов по умолчанию.

FILEBASENAME Имя текущего файла без расширения.

FILEBASENAMEASIDENTIFIER Имя текущего файла, закодированное в виде идентификатора C.

FileHeader Текст помещается вверху каждого нового текстового файла.

FILENAME Полное имя текущего файла.

FULLUSERNAME Полное имя текущего пользователя macOS.

NSHUMANREADABLECOPYRIGHTPLIST Запись для удобочитаемой строки об авторских правах в файле Info.plist цели приложения MacOS. Значение макроса должно включать разделители XML для plist. Например, допустимое значение:

'''
    <key>NSHumanReadableCopyright</key>

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


'''

Обратите внимание, что значение включает символ новой строки.

ORGANIZATIONNAME Название вашей организации, которое отображается в виде стандартного текста в папке вашего проекта. Название организации в вашем проекте не совпадает с названием организации, которое вы вводите в App Store Connect.

PACKAGENAME Название пакета, построенного по текущей схеме.

PACKAGENAMEASIDENTIFIER Версия в кодированном C-идентификаторе имени пакета, построенная по текущей схеме.

PRODUCTNAME Название приложения продукта построено по текущей схеме.

Projectname Название текущего проекта.

RUNNINGMACOSVERSION Версия macOS под управлением Xcode.

Имя_целевого_объект Наме текущей цели.

ВРЕМЯ Текущее время.

ИМЯ ПОЛЬЗОВАТЕЛЯ Имя пользователя для текущего пользователя macOS.

UUID Возвращает уникальный идентификатор.При первом использовании этого макроса он генерирует идентификатор перед возвратом.Вы можете использовать этот макрос для создания нескольких уникальных идентификаторов с помощью модификатора.Каждый модификатор возвращает идентификатор, уникальный для этого модификатора.Например, при первом использовании модификатора UUID: firstPurpose макрос генерирует и возвращает уникальный идентификатор для этой комбинации макроса и модификатора.Последующее использование модификатора UUID: firstPurpose возвращает тот же идентификатор.Добавление модификатора UUID: secondPurpose создает и возвращает другой идентификатор, который будет уникальным для UUID: secondPurpose и отличается от идентификатора для UUID: firstPurpose.

WORKSPACENAME Имя текущего рабочего пространства,Если открыт только один проект, то имя текущего проекта.

YEAR Текущий год в виде четырехзначного числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...