Xcode - как изменить целевое членство файла через командную строку? - PullRequest
0 голосов
/ 23 октября 2018

Есть ли способ изменить целевое членство файла в проекте Xcode с помощью командной строки?

Вот что я пытаюсь сделать с помощью пользовательского интерфейса Xcode:

target membership

1 Ответ

0 голосов
/ 01 марта 2019

Я также должен был сделать это для КИ.После многих копаний, я не думаю, что это достаточно распространено, чтобы кто-нибудь написал инструмент, который поможет с этим справиться.

Единственный вывод, к которому я пришел, - это непосредственное редактирование файла project.pbxproj, что никогда не былоотличная вещь, чтобы сделать.Ни один из инструментов, которые утверждают, что сделали это, не помог, пока я не нашел этот ответ от stackoverflow при редактировании файла project.pbxproj .По сути, вы можете преобразовать файл project.pbxproj в формат JSON, используя plutil -convert json project.pbxproj, и использовать инструмент манипуляции JSON, чтобы сделать эти файлы заголовками, а затем указать, что они являются заголовками того объекта, который вы хотите.

Когдаконвертируя project.pbxproj в формат JSON, помните, что Xcode больше не сможет показывать вам навигатор проекта для этого проекта.Однако он все равно будет собираться и запускаться, так что это действительно полезно, только если вы планируете сделать это прямо перед сборкой (например, для CI).

Формат project.pbxproj в формате JSON имеет почти всеважные данные под ключом «объекты».Файл, которым вы хотите быть заголовком, уже имеет запись с ключом UUID для файла и значением пути, которое вы можете использовать, чтобы связать UUID с вашим файлом.Вот пример для этого формата:

   // UUID for your file
   "65TYSSDXHSLP4UUOAD9D40C322AAGHM9": {
      "path": "MyHeader.h", // Your file's name
      "isa": "PBXFileReference",
      "includeInIndex": "1",
      "lastKnownFileType": "sourcecode.c.h",
      "sourceTree": "<group>"
    }

Есть еще одна запись для объявления этого файла в качестве заголовка, который имеет свой собственный UUID и ссылку на UUID вашего файла:

    // UUID for your file as a header
    "YU3BSD39O9PT5RESDFV741D1": {
      "isa": "PBXBuildFile",
      "fileRef": "65TYSSDXHSLP4UUOAD9D40C322AAGHM9", // UUID for your file MyHeader.h
      "settings": {
        "ATTRIBUTES": [
          "Public" // could also be Project or Private
        ]
      }
    }

Наконец, у вашей цели есть список файлов заголовков, куда вы хотите, чтобы UUID указывал ссылку на заголовок.

    "A82GAE9A5HUIO063IOPQAAQIUFGSNXZ": {
      "isa": "PBXHeadersBuildPhase",
      "buildActionMask": "2147483647",
      "files": [
        "YU3BSD39O9PT5RESDFV741D1" // UUID for your file as a header
      ],
      "runOnlyForDeploymentPostprocessing": "0"
    }

Опять же, непосредственное изменение файла project.pbxproj никогда не было хорошей идеей, нопока нет лучшего инструмента для внесения этих изменений без использования Xcode, это лучшее, что я смог найти.Если кто-то знает, что я не такой, пожалуйста, дайте мне знать.

...