C++ для Symbian S60: выбираем среду разработки

Специализированные среды разработки

Разумеется, можно написать достойную программу под Series 60, пользуясь всего-то текстовым редактором и командной строкой. Но это аналогично рытью траншеи чайной ложкой. В первой статье мы рассказали, какие инструменты существуют и как их устанавливать. Чтобы помочь вам определиться с выбором пакета, мы и подготовили эту статью.  Мы поговорим об особенностях Carbide и CodeWarrior и о том, как с ними работать. 

Для разработки достаточно одного из этих двух IDE, какой именно выбрать – решать вам.

Среда разработки CodeWarior

В общем, что называется, нормальная IDE. Программист, имеющий опыт работы с одним из следующих пакетов – Visual Studio, Borland, NetBeans, DevCpp – или ещё чем-нибудь, как правило, осваивается с CodeWarior мгновенно. Как и полагается, слева – панель проекта, справа – окно для редактирования кода, сверху – меню и панели инструментов.

Сборка примера из SDK

Чтобы собрать пример из SDK, необходимо создать проект на основе mmp-файла. Подробно о файле проекта mmp – позже, а пока – просто запомните, что у каждого проекта есть mmp-файл. Для импорта mmp нужно проделать следующие шаги:

1. Выбрать File->ImportProject from mmp-file.

2. Откроется окно выбора производителя и версии SDK.

Одновременно можно использовать только одну версию SDK. Для сборки попеременно для нескольких версий SDK делаем импорт ещё раз, для иной версии SDK. Что делать, если нужного SDK нет в списке, будет описано позже.

3. После нажатия кнопки "Далее" переходим на следующее окно:

Во-первых, здесь следует выбрать или ввести нужный mmp-файл. Затем следует выбрать платформу, для которой требуется создать проект. Вот список основных платформ:

WINS Сборка компилятором Microsoft Visual Studio для эмулятора WINSCW Сборка компилятором Nokia для эмулятора ARMI Сборка компилятором GCC для смартфона под Symbian 6-7-8 THUMB То же самое, практически нет отличий. В примерах SDK предпочитают использовать THUMB GCCE Сборка компилятором GCC-E для смартфона под Symbian 9 ARMV5 Сборка фирменным, дорогим компилятором ARM RVCT для смартфона под Symbian 9. Такой компилятор нужно приобретать отдельно.

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

Рекомендую так и поступить.

Следующее поле – "specify alternate 'makmake' file" – для продвинутых пользователей. Здесь нужно что-то указывать только в том случае, если вы разобрались со скриптом makmake.pl из SDK и сделали на его основе свой, более удобный для вас. Я лично сделал себе альтернативный скрипт, но не сразу. Поэтому для начала оставляем это поле пустым.

Чекбокс "Create files in default root directory" позволяет выбрать, создавать целую пачку make-файлов в папке epoc32\build или в папке с проектом. Честно скажу, ни к чему отключать этот чекбокс.

4. Последнее окно предлагает выбрать альтернативный XML-шаблон для импорта. Ни разу не видел в этом необходимости.

 

Осталось дождаться, когда проект будет импортирован.

Чтобы собрать проект и запустить его в эмуляторе, достаточно нажать зелёный треугольничек над панелью проекта ("Run") либо горячую клавишу Ctrl+F5.

Консоль ошибок и предупреждений

 После запуска компиляции проекта на экране появляется панель с ходом выполнения компиляции (здесь же компиляцию можно остановить), а также консоль ошибок и предупреждений.

Сообщения делятся на 3 типа:

Error – ошибка, из-за которой невозможно собрать приложение

Warning – некритическая ошибка, которую компилятор может пропустить, но из-за которой могут быть ошибки в работе программы

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

#pragma message("тут иногда прога падает…")

Верхние 3 кнопки позволяют убирать из общего списка каждый из 3-х типов.

Запуск эмулятора

Если не появилась ни одна ошибка (warning и note может быть сколько угодно), значит, эмулятор текущего SDK уже запустился автоматически.

 

Основные инструменты проекта Дальнейшая работа с проектом

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

Проект всегда можно открыть через File->Open – файл проекта имеет расширение MCP.  Это теоретически. Практически – CodeWarrior очень любит выдавать ошибки при этой операции, проблему решает только повторный импорт mmp-файла.

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

1. Запускаем File->New. В открывшемся окне, на вкладке Project выбираем Symbian project wizzard, здесь же вводим желаемое имя проекта и путь. (О существовании русского языка и пробелов – временно забыть!!).  Для начала назовём проект First и в качестве папки выберем C:\Symbian.

На следующем окне, так же как и при импорте файла, выбираем версию SDK.

2. Следующее окно интереснее:

Это выбор типа проекта. На скриншоте показан универсальный выбор для всех SDK Series 60, выбирайте всегда так.

Нижний чекбокс – очень полезная штука. Он позволяет создать проект, который одновременно поддерживает и Symbian 9, и более ранние версии ОС.

3.

В следующем окне, как и в случае с импортом, выбираем платформу, оставляем поле Platform Selection пустым).

Поле Application Identifiers уже заполнено именем проекта, и менять это значение не рекомендуется.

Об UID'ах подробно расскажу позднее, сейчас пока оставим значение, предложенное программой.

Комментарии к файлу заполняются по желанию.

Жмём "Готово", потом уже знакомую зелёную стрелочку – вуаля, программа собралась, запустился эмулятор... Как это не собралась? А, ну да, если собирали под SDK 1st-2nd  – пишет ошибку: 

Error   : the file 'eikstart.h' cannot be opened

FIRST.cpp line 11  

Щёлкаем по ошибке, в открывшемся файле находим строки:

#pragma message("Please ensure that you read the ReadMe file.")

#include

#ifdef __UI_FRAMEWORKS_V2__

Заменяем их на

#ifdef __UI_FRAMEWORKS_V2__

#include

именно в указанном порядке. Немного философствуем на тему, пробовали ли тестеры IDE, которая, кстати, стоит несколько тысяч евро, вообще, хоть раз создать в ней новый проект для Symbian 8 и 9 одновременно, и снова жмём зелёную стрелочку.

Теперь всё ОК и эмулятор на экране.  Бежим в папку с программами... Если сборка была под Symbian 9 – то First нету, зато есть иконка с именем ChangeMe.

Ищем теперь в C:\Symbian\First\group файл под названием First_loc.rls и там меняем ChangeMe на First.

Ну всё, ура! Работает! Видим белое окошечко, а в заголовке First.

Сборка для телефона

В общем случае сборка для телефона должна делаться просто – меняем платформу (GCCE для Symbian 9 или ARMI/THUMB для более ранних), уже недоступна знакомая зелёная стрелочка, зато есть кнопка MAKE. Нажимаем, всё компилируется вроде. По заверениям разработчиков и согласно настройкам проекта, мы должны получить собранный SIS-файл.

Но не получаем. Потому, что PKG-файл у нас до безобразия «кривой». Не спасет даже описанный выше makesis. Почему он кривой и как его поправить – отдельная тема, которая будет рассмотрена позже.

Дополнительная настройка CodeWarrior

Первые попытки написать в редакторе код опять вызывают приступ философствования в адрес разработчиков. Вместо русского текста – кракозяблы, нажатие Ctrl+C удалило выделенный текст, а не скопировало... Какой студент-двоечник написал эту мерзость!!??

Всё на самом деле не так плохо – только как в старом анекдоте: "После сборки нужно тщательно обработать напильником…"  и из трактора получится самолёт.

Идём в Edit->Preferences. Ннастраиваем Code Completion и Fonts Tabs. Примерно вот так:

Так, теперь русский текст должен вводиться без проблем и селектор функций и переменных работает лучше

Идём в Edit->Commands and Key bindings. В Commands открываем ветку Edit, для команд Cut,Copy и Paste добавляем новые горячие клавиши. При вводе значения горячей клавиши жмём соответственно Ctrl+X,Ctrl+C,Ctrl+V – в РУССКОЙ  раскладке клавиатуры! Вместо них отображается просто "Ctrl+", зато хоткеи теперь работают и при русской раскладке.

После этого можно ещё там же задать горячую клавишу для дополнения кода – привычный Ctrl+Space – и переключение между h и cpp  файлами – и наконец почувствовать, что всё не так уж и плохо.

Прочие плюсы и минусы

Добавлять файлы lib к проекту в будущем придётся очень часто, здесь это вроде бы можно сделать визуально, однако каждый раз искать в папке SDK библиотеки для всех платформ – утомительно, а процесс поиска упростить разработчики не догадались.

Есть и ложка мёда – весьма полезный пункт меню: Project->Reimport Symbian Project <Имя проекта>,который позволяет повторно импортировать проект, безо всяких вопросов.

Панели со списком классов проекта, как это принято в других IDE, нет. Любители создавать большие файлы, которые содержат несколько классов, измучаются. Вместо неё есть пункт View->Class Browser – в нём скрыт список всех существующих классов, как в SDK, так и в проекте.

Отсутствие привычного пункта меню "Rebuild All" способно напугать даже опытного. Но паниковать не следует. В меню Project разместился пункт "Remove Object Code"

Вообще, навигация по проекту слабовата.

Над окном редактора всегда есть список функций. На больших классах он кажется жутким, так как функции отсортированы не по алфавиту, но это тоже можно настроить: Edit->Preferences->Editor->Editor Settings, здесь включить чекбокс "Sort function popup".

Carbide.C

Если пользователь никогда не работал на Eclipse от IBM, то первое же знакомство с Carbide повергает его в уважительное недоумение. Как синхрофазотрон – ясно, что это круто, но что оно делает – непонятно.

Особенно радует куча всяких малюсеньких окошечек, которые радостно помаргивают юзеру с каждым движением мыши. Щёлкнул где-то случайно – какое-то ценное окошечко исчезло, а как оно называлось и как его вернуть – уже нужно спрашивать на форумах, так как сам не найдёшь...

Автору знакомы люди, которые прониклись идеологией Eclipse IDE и считают эту идеологию единственно возможной для создания современных инструментов для разработчика. Автор пока до этого не дошёл, поэтому в последующих строках может быть доля предвзятости. Потому заранее прошу за это прощения.

Прежде всего – при чём тут Eclipse? Дело в том, что IBM Eclipse,  написанная для JAVA и на JAVA, стала основой Carbide. Nokia убрала из оригинала всё, касающееся JAVA, и написала плагины для С++.

Для упрощения восприятия запомните одно полезное правило. В Carbide каждый режим (редактирование кода, отладка и прочее) представлен отдельным набором окон, и этот набор называется перспективой (Perspective).  Каждая операция с окном – закрытие, изменение размера, перетаскивание – сразу же сохраняется в текущей перспективе. Управлять перспективой можно из меню Windows, в частности там есть чрезвычайно полезный пункт Reset Perspective, позволяющий вернуть на место окно, которое случайно было закрыто.

Сборка примера из SDK

1. Читатель, поигравшийся с CodeWarrior, способен найти первый шаг самостоятельно – File->Import. Дальше появляется целый список типов для импорта:

 

Пока что выберем Symbian MMP File, думаю, что остальные типы читатель в дальнейшем освоит самостоятельно.

2.

 

Далее нужно выбрать mmp-файл.

Чуть ниже – чекбокс "Copy source files into workspace". Если он включён – Carbide создаст копию исходников и поместит их в свою папку, по умолчанию это C:\Symbian\Carbide\workspace.

Почему этот пункт всегда по умолчанию выделен – загадка.

Ещё ниже следует список всех SDK, которые нашёл Carbide. Можно выбрать сразу все, что очень хорошо.

Вот и всё, готово.  Теперь запустим проект в эмуляторе, но для начала соберём. Для этого вызываем контекстное меню проекта щелчком правой кнопки мыши.

 

Не советую пользоваться меню Project, если открыто 2 или более проекта, – вы быстро запутаетесь, кого из них компилируете.

В этом же меню можно сменить платформу для сборки – пункт Active Build Configurations.

Затем нужно запустить эмулятор – Run As->Run Symbian OS Application:

Теперь на экране – окно эмулятора, в котором находится наша программа. Это белое окно с helloworld в заголовке уже успело порядком надоесть:-)

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

1. Истинное призвание Carbide – на каждом шагу говорить юзеру: "Приколись, как много я могу! Хошь так, хошь так, ты только всё правильно выбери и ничего не перепутай". Вот и тут, нажав File->New Project, видим менюшку, поражающую воображение:

Выбираем верхний пункт.

2.

 

Если в CodeWarrior было всего-то 3 или 4 мастера, то тут их целое дерево. Да ещё и, судя по отключённой галочке, они не все показаны! Если бы в Nokia решили пошутить и добавить туда пункт "Проекты запуска космического корабля с Байконура" – я бы, наверное, поверил.

Выбираем как показано на скриншоте.

3. Набор шаблонов для нового проекта более обширный.

 

Но, к сожалению, вместо лаконичного чекбокса CodeWarrior об одновременном проекте для всех Symbian-платформ видим наборы под разные версии SDK. Выберем для примера единственно возможный шаблон для 3rd Edition.

4. При выборе платформ укажем реально, под какие платформы мы планируем собирать:

 

Самый верхний чекбокс, как вы уже поняли – сборка для эмулятора, нижний – сборка для телефона.

5. UID и копирайты.

Кроме того, есть загадочное поле Message Text. Текст из этого поля будет показан на диалоге в программе. Не вводите здесь русский текст!

6. Ну и, наконец, надо выбрать папки, где будут храниться исходники проекта. Например, для любителей не разделять файлы .H и .CPP по двум отдельным папкам.

 

Нажимаем Finish.

В принципе, достаточно нажать Run As->Run Symbian OS Application. Но если в папке эмулятора есть скомпилированный исполняемый файл, нужно предварительно нажать Build.

В эмуляторе у нас приложение, которое показывает меню из 3-х пунктов. Один из пунктов показывает сообщение, текст которого мы указали в п.5 мастера.

Пункт меню Message From File показывает на экране текст из файла, который на вашем диске находится здесь: C:\Symbian\9.1\S60_3rd\Epoc32\winscw\c\private\\<Имя проекта>.txt.

Заодно можно чему-то научиться – как прочитать файл, как показать его текст. Код этого дела находится в файле <Имя_проекта>AppUi.cpp , функция HandleCommandL()

Сборка для телефона

Как и для CodeWarrior, первым делом меняем активную платформу: контекстное меню проекта->Active Build Configuration->Phone (GCCE) Release. (Для Symbian 7-8 – THUMB или ARMI).

Делаем Build.

В папке C:\Symbian\Carbide\workspace\<Имя_проекта>\sis\ должен появиться сгенерированный SIS-файл, для Symbian 9 – уже подписанный сертификатом SelfSigned и готовый для установки на телефоне.

В отличие от CodeWarrior, собрать SIS-файл, как правило, получается с первой попытки.

Прочие плюсы и минусы

Судя по написанному выше – всё вроде бы совсем гладко и красиво, но...

Неискушённый пользователь в общем незнаком с приложениями на Java под ПК. Как правило, это приложения медленные, и Carbide не исключение. Придётся привыкать, что, например, селектор функций иногда задумывается или что при банальном нажатии Enter компьютер может зависнуть на несколько секунд.

Опытного пользователя нужно предупредить об одной не очень приятной особенности. Большинство файлов, сгенерированные Carbide, нельзя править вручную – при компиляции IDE откатит все сделанные изменения и ни слова об этом не скажет. Это касается файла MMP, исходников, сгенерированных UI Designer и некоторых других. Файл MMP можно править через настройки проекта. В  прочих случаях необходимо закрыть проект, сделать правку в каком-нибудь текстовом редакторе и импортировать MMP.

Я бы не назвал Carbide простым и интуитивно понятным. Но в то же время в программе присутствует громадное количество инструментов и куча возможностей настроить IDE под себя.

Навигация по проекту более удобна, чем в CodeWarrior, – в дереве проекта для каждого файла можно открыть список находящихся в нём функций и классов, есть специальная панель Outline со списком функций.

В коммерческих версиях Carbide появился UI-Designer – функция, позволяющая создавать интерфейс программы визуально. Пока что функционал этого дела далёк от того же Delphi, где половина программы делается мышкой, но есть шансы, что UI Designer разовьётся во что-то мощное.

Нельзя не упомянуть такие важные вещи, как рефакторинг (контекстно-зависимые манипуляции с именами идентификаторов) и Code Folding (сворачивание отдельных участков кода для повышения читабельности). В CodeWarrior этого нет и не было.

И самый объективный и неоспоримый плюс: Nokia больше не собирается исправлять и развивать CodeWarrior и рекомендует всем пользователям этой IDE переходить на Carbide. Об этом было заявлено официально.

По решению судей...

В красном углу ринга – олдскульный трактор, который после тщательной обработки напильником превращается в самолёт.

В синем углу ринга – солидный, но медленный лимузин, тормозящий на поворотах, начинённый всеми чудесами современной техники.

Решать пользователю. Новичку, как и всегда, предлагается использовать то, что рекомендует Nokia – т.е. Carbide. Опытный пользователь в чьих-либо советах не нуждается – он сам внимательно рассмотрит оба варианта.






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.