Изучение и понимание системы сборки Xcode

Хорошо, мне интересно узнать о процессе сборки с Xcode. Настройка нескольких целей, автоматизация управления версиями и общее понимание системы, чтобы я мог манипулировать ею, чтобы делать то, что я хочу.

У кого-нибудь есть какие-нибудь книги или я могу указать мне какую-нибудь документацию, чтобы я мог все это выяснить?

Благодаря тонну.

Другое дело, если кто-то на самом деле видит это, так как меняет его.

Но какие-нибудь книги, которые кто-либо знает об этом, будут посвящены Xcode 4? Есть Xcode 3 Unleashed, но мне было бы очень любопытно, если бы были какие-нибудь книги, которые в основном посвящены Xcode 4.

2 ответа

Одна вещь, которая действительно важна для последовательных, воспроизводимых, автоматизированных сборок, это знание xcodebuild команда. К сожалению, я не могу найти никаких официальных документов на нем, кроме man-страницы (типа man xcodebuild). Здесь есть полезное руководство по автоматизации сборок iphone, которое включает в себя сборку с xcodebuild и версия с agvtool, Это так же актуально для общего построения приложений Mac.

Обычно сборка с помощью xcodebuild очень проста:

cd project_dir
xcodebuild -project myproject.xcodeproj -configuration Release ARCHS="x86_64 i386" build

После того, как вы сможете выполнить сборку из такого сценария, очень легко внедрить ее в автоматизированную систему сборки.

Когда вы компилируете исходный файл, выполняются следующие шаги.

  1. Preprocessing:

    • Заменить макросы
    • Сплит .h а также .m.

    В Xcode вы можете посмотреть вывод препроцессора .m файл, выбрав

    select .m file -> Product -> Perform Action -> Preprocess
    
  2. Compiling- переводит низкоуровневый промежуточный код.
    Часто вы можете увидеть этот файл при отладке кода, владельцем которого вы не являетесь. Xcode позволяет вам просматривать вывод.

    select .m file -> Product -> Perform Action -> Assemble
    
  3. Assembling(производить .o) - переводит код в объектный файл (.oфайл) [Mach-O] В Xcode вы найдете эти объектные файлы внутри<product_name>.build/Objects-normal папка внутри каталога производных данных.

  4. Static Linking(производить .app, .a, .framework...) - это часть статического компоновщика, который должен разрешать символы между объектными файлами и библиотеками / фреймворками. Этот процесс создает объединенный исполняемый файл, который может содержать дополнительные ресурсы и динамический двоичный файл.

  5. Dynamic linking- связывание во время загрузки или выполнения. Этот процесс может генерировать ошибки во время двоичного выполнения.

Взгляните на пример статических динамических фреймворков

Также вы можете использовать Xcode Report Navigator чтобы узнать больше о процессе сборки

Другие вопросы по тегам