Разработка под Мак. Часть 1. Создание проекта и настройка репозитория

Jul 02, 2012 16:20



В этой части - создание проекта в Xcode, сохранение проекта в репозитории и настройка репозитория.


Создание проекта

Запускаем Xcode, на стартовом экране "Welcome to Xcode" выбираем пункт "Create a new Xcode Project".

1. Новый проект


В диалоге "Choose a template for your new project" выбираем раздел "Mac OS X", в нем раздел "Application". В правой части выбираем шаблон "Cocoa Application". Это выбор по умолчанию, так что ничего в принципе выбирать и не придется.

2. Шаблон приложения


В диалоге "Choose options for your new project" указываем опции проекта:

* "Product Name" - название проекта. Это название будет присвоено создаваемому приложению, будет использоваться как префикс некоторых файлов, а также этим именем будет названа папка, в которой будет сохранен проект. У меня тестовый проект будет называться Apptest.
* Include Unit Tests - включить юнит-тесты. Надо снять эту галку, чтобы не создавались лишние файлы. Юнит-тесты добавим как-нибудь потом.

Остальное оставить по умолчанию.

3. Опции проекта


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

В нижней части диалога находится галка "Source Control". При установленной галке для проекта будет автоматически создан  git-репозиторий. По умолчанию галка установлена, так ее и следует оставить.

4. Сохранение проекта


Все, теперь проект создан. При создании проекта Xcode автоматически создал несколько файлов, это скелет приложения. Назначение каждого конкретного файла и их взаимосвязь пока остаются для меня загадкой.

5. Проект создан


Обратите внимание - структура файлов в Xcode не соответствует структуре файлов в файловой системе. Сравните:

6. Структура файлов


На самом деле желтые папки в Xcode - это не настоящие папки. В терминологии Xcode это "группы". Группа - это такая виртуальная папка, в нее можно поместить файлы, которые на самом деле находятся в разных концах файловой системы. В проект можно поместить и настоящие папки, они будут отличаться от групп цветом - настоящие папки синие, а не желтые.

Кроме того, и группы и папки в проекте представлены, так сказать, ссылками, а не лично. Если удалить из проекта группу или папку, то по умолчанию из проекта просто будет удалена ссылка на них, сами же файлы останутся в файловой системе нетронутыми.

Созданный проект является полностью работоспособным. Он, конечно, ничего осмысленного не делает, но его можно скомпилировать и запустить. Компиляция проекта запускается кнопкой "Run" в левом верхнем углу. Скомпилированное приложение будет автоматически запущено.

7. Окно запущенного приложения


Запущенное приложение находится под контролем Xcode. Можно нажать в Xcode кнопку "Stop" и приложение будет закрыто. Также приложение можно заново перекомпилировать, закрывать его при этом не требуется, Xcode все сделает сам.

Настройка репозитория

Теперь посмотрим, что там с репозиторием. Xcode имеет встроенные средства для работы с репозиторием, они находятся в меню "File - Source Control". Не знаю, насколько эти средства удобны. Я хорошо умею работать с репозиторием из командной строки, так что пока со встроенными средствами разбираться не буду.

В папке проекта Apptest есть еще одна папка с таким же именем (в ней находятся непосредственно исходные файлы) и файл Apptest.xcodeproj, в котором хранятся настройки проекта. Чтобы не путать папку проекта с папкой исходных кодов, я переименую папку проекта в apptest, а папка с исходниками так и останется Apptest.

8. Папка проекта apptest


Файл Apptest.xcodeproj - не верьте глазам своим - на самом деле является не файлом, а папкой. В Файндере этого не видно, но ls -l в командной строке срывает покровы - это папка (атрибут d). Кстати, надо бы разобраться, как сделать такую папку/файл. В этой папке находится файл (настоящий, ага) project.pbxproj, который и является файлом настроек проекта.

Посмотрим, что у нас сейчас в репозитории:

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
# modified:   Apptest.xcodeproj/project.pbxproj
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
# Apptest.xcodeproj/project.xcworkspace/
# Apptest.xcodeproj/xcuserdata/
no changes added to commit (use "git add" and/or "git commit -a")

Отсюда видно, что сразу же после создания проекта в файле/папке настроек Apptest.xcodeproj изменяется файл project.pbxproj, плюс создаются папки project.xcworkspace и xcuserdata.

В папках project.xcworkspace и xcuserdata хранятся некие специфичные для пользователя настройки IDE - типа того, какая панелька была открыта и какого цвета подсветка включена. К собственно проекту эти настройки не относятся. Если бы у меня не стояло задачи создать репозиторий и выложить его в публичный доступ, то на существование этих папок можно было бы просто пне обращать внимания. Но при публикации репозитория эти папки будут лишними, поэтому нужно настроить репозиторий на игнорирование этих папок.

Для этого создадим в папке проекта apptest файл .gitignore, в который запишем игнорируемые папки:

$ echo "project.xcworkspace" >> .gitignore
$ echo "xcuserdata" >> .gitignore

Проверим:

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
# modified:   Apptest.xcodeproj/project.pbxproj
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
# .gitignore
no changes added to commit (use "git add" and/or "git commit -a")

Как видим, git "забыл" ненужные нам папки. А нам нужно не забыть добавить в репозиторий файл .gitignore:

$ git add .gitignore
И закоммитить все изменения:

$ git commit -am 'Start'

Теперь в репозитории есть два коммита:

$ git log
commit 2e155c96ee97cb9ccd1a6c0341ed219f917274c8
Author: Михаил Иванов
Date:   Mon Jul 2 13:58:30 2012 +0400
    Start
commit fb7b3369777881fbfd05e4e3c00d74fe5200a185
Author: Михаил Иванов
Date:   Mon Jul 2 13:54:55 2012 +0400
    Initial Commit
Все, на этом создание нового проекта и настройка репозитория закончены. Репозиторий, бранч master.

Часть 0. Предисловие
Часть 2. Резидентное приложение

mac, разработка

Previous post Next post
Up