Xcode - как изменить целевое членство файла через командную строку?
0 ответов
Я также должен был сделать это для CI. После многих копаний, я не думаю, что это достаточно распространено, чтобы кто-нибудь написал инструмент, который поможет с этим.
Единственный вывод, к которому я пришел, - это редактировать файл project.pbxproj напрямую, что никогда не было хорошим делом. Ни один из инструментов, которые утверждают, что сделали это, не помог, пока я не нашел этот ответ stackru при редактировании файла 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, его лучшее, что я смог найти. Если кто-то знает что-то, чем я не являюсь, пожалуйста, дайте мне знать.