Как изменить существующую цель Xcode с динамической на статическую? - PullRequest
14 голосов
/ 29 августа 2009

Я работаю с существующим проектом, который создает динамическую библиотеку (Cocoa API).

Я бы лучше сгенерировал статическую библиотеку, но если я изменю Поле [Linking | Mach-O Type] из «Динамическая библиотека» в «Статическая библиотека», как Чистый проект, так и Строительный проект жалуются, что цель имеет недопустимое значение MACH_O_TYPE staticlib.

Есть ли простой способ заставить сборку производить статический .a файл?

Спасибо
Eric

Ответы [ 3 ]

22 голосов
/ 14 мая 2010

Открывает файл project.pbxproj в папке YourProjectName.xcodeproj с помощью TextEdit, ищет productType и меняет его значение на " com. apple.product-dynamic"to" com.apple.product-static"

4 голосов
/ 15 сентября 2009

В итоге я создал новый проект «статической библиотеки», а затем добавил участники. Закрытие xcode и вызов двух файлов проекта в текстовый редактор позволил мне быстро завершить новый проект.

1 голос
/ 04 апреля 2018

Мне удалось сделать это с помощью этого поста и немного покопаться. Дополнительные изменения, которые мне нужно было сделать, это изменение compiled.mach-o.dylib на archive.ar и изменение различных ссылок в файле проекта (включая внутренние комментарии, называйте меня педантичным) с foo.dylib до libfoo.a .

Мне также пришлось создать новую «схему», прежде чем она будет построена, но это может быть потому, что я изменил название проекта, я не уверен. Кроме того, любые фреймворки, на которые ссылается библиотека, необходимо добавить в приложения, которые ссылаются на нее при переходе от .dylib к .a.

Это стоило того, чтобы упорствовать, поскольку он сохранил все тонкости исходного проекта (такие как создание толстого двоичного файла 32/64 для выпуска, но не для отладки). Результат.

...