Вступление

 

Занимаюсь программированием микроконтроллеров на Си. Для расширения возможностей начал осваивать программирование под PC, на Срр. Работаю под виндой, однако при выборе среды/компилятора ориентировался на кроссплатформенность. До этого момента пробовал Qt + MinGW, однако далеко не продвинулся.

 

Далее буду описывать процесс обучения. Уточню сразу, я не знаком с ООП и не имею никакого опыта программирования под PC. Поэтому изложение материала имеет исключительно субъективный характер.

 

Перечислю, что надо будет установить. Причем установить так, чтобы сборка была статической, то есть все необходимое упаковывается в создаваемый exe (без зависимостей). И чтобы этот exe имел минимальный размер. Операционка — Win7, установка под администратором.

  1. Code::Blocks – среда программирования
  2. MinGW – компилятор, представляет собой порт юниксовского GCC под винду
  3. wxWidgets – графическая библиотека

 

Примечание

Почему именно такой выбор? Как я уже говорил, пробовал Qt (5я версия, если не ошибаюсь). Там у меня были ужасные проблемы с привязкой компилятора, со статической сборкой. Кроме того, простые тестовые программы весили очень много. В общем, негативные впечатления.

Code::Blocks попробовал случайно, по просьбе товарища собрать простой exe-шник. Как ни странно (после Qt), сразу подхватил компилятор, и не ругался. Мало весит, компилирует быстро. Решил продолжить именно с этой средой.

MinGWпорт GCC под Win. Читал, что под винду оптимальнее VisualC++. Но, есть версия Code::Blocks уже заточенная под MinGW, именно этот вариант я выбрал

wxWidgetsбиблиотека с графикой. Code::Blocks (в отличие от Qt) не имеет встроенных библиотек для графики, их нужно ставить отдельно. Есть варианты, но мне на форумах примелькалась именно эта библиотека.

 

Установка Code::Blocks

 

Code::Blocks скачивается с оффсайта www.codeblocks.org. Там есть версия уже с компилятором MinGW, не требующая установки. У меня это файл "CodeBlocks-16.01mingw-nosetup.zip". Распаковываем архив, выносим куда надо ярлык на файл "codeblocks.exe".

 

Установка MinGW

 

MinGW лежит внутри папки CodeBlocks. Так как я пользуюсь версией без инсталятора, есть один нюанс Для нормальной работы необходимо прописать путь к исполняемым файлам компилятора в системную переменную PATH.

 

Сразу уточню, как проверить, прописан ли MinGW в переменной PATH. В командной строке набираем mingw32-make -v. Если компилятор не прописан, появится сообщение "mingw32-make -v не является внутренней или внешней командой, исполняемой программой или пакетным файлом". Если все нормально, получаем версию установленного компилятора MinGW

PC-Coder part1 01

 

В моем случае путь имеет вид "C:\CodeBlocks-16.01mingw-nosetup\MinGW\bin". Записать его в переменную PATH можно несколькими способами.

 

1. Запустить файл "mingwvars.bat", который лежит в папке MinGW. У меня не сработало

 

2. Свойства системы (Win7). В самом низу кнопка "Переменные среды".

Находим переменную Path в системных переменных. В качестве значения — пути к необходимым файлам, разделенные через точку с запятой.

 

Нажимаем "Изменить" (или просто двойной клик), и добавляем путь к папке компилятора MinGW. У меня путь выглядит так: C:\CodeBlocks-16.01mingw-nosetup\MinGW\bin. Не забываем, что пути в переменной разделяются символом ';'

PC-Coder part1 02

 

3. Командная строка. Лично мне так удобнее. Тем более, проверить можно сразу. Одной командой добавляем в конец переменной PATH точку с запятой и путь к компилятору:

 

set PATH=%PATH%; C:\CodeBlocks-16.01mingw-nosetup\MinGW\bin

 

На скриншоте видно, как модифицируется значение переменной, и сразу проверяется версия компилятора.

PC-Coder part1 03

 

Установка wxWidgets

 

wxWidgets устанавливал по мануалу на вики, искать WxWindowsQuickRef. Этот мануал надо изучить очень внимательно.

 

Для начала запускается exe, который распаковывает библиотеку. Библиотека представляет собой исходники, которые надо скомпилировать установленным ранее MinGW. Компилируем из командной строки

 

cd C:\wxWidgets-2.8.12\build\msw

mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport

 

Параметры сборки подробно описаны в WxWindowsQuickRef, лучше я не напишу. Приведу мой окончательный вариант (компилировал несколько раз, пока понял что надо)

BUILD=release

Сборка для релиза, без отладки

SHARED=0

Библиотека упаковывается в наш exe-файл. Никаких зависимостей. Это и есть статическая сборка.

MONOLITHIC=0

Библиотека разбивается на множество dll-файлов, и если сборка статическая, в exe-шник упаковываются только используемые модули. Иными словами, берем только самое необходимое, размер exe по минимуму

UNICODE=1

Поддержка юникода. Надо для кириллицы.

 

Примечание

В принципе, можно скомпилировать несколько вариантов wxWidgets. Однако при этом создаются разные папки с библиотеками. В таком случае надо указывать в настройках Code::Blocks конкретные директории, иначе при компиляции получим кучу ошибок.

Если необходимо заново пересобрать библиотеку, старую версию надо удалить с помощью деинсталятора unins000.exe, который лежит в папке с wxWidgets

 

Компиляция wxWidgets длится примерно 15-20минут (в моем случае). Я перепробовал много конфигураций, и ни разу не получил ошибку при компиляции. После компиляции можно начинать настраивать среду.

 

Настройка Code::Blocks

 

Запускаем Code::Blocks. Для начала необходимо настроить пути к wxWidgets. Открываем вкладку Settings, пункт Global Variable. Прописываем пути, как указано на скрине

PC-Coder part1 04

 

Теперь во вкладке Settings выбираемпункт Editor. В открывшемся окне выбираем вкладку Encoding Settings и указываем, что необходимо использовать кодировку UTF-8. В противном случае получим проблемы с кириллицей.

PC-Coder part1 05

 

Создание тестового приложения

 

Пробуем создать простейшее приложение. Нажимаем кнопку "Create a new project" на начальной странице Code::Blocks, либо через меню File=>New=>Project. Из предложенных шаблонов выбираем wxWidgets project

PC-Coder part1 06

 

В следующем окне выбираем установленную версию библиотек. Если не помним, версия указана в имени папки, куда распаковалась wxWidgets. В моем случае 2.8.12

PC-Coder part1 07

 

Даем проекту имя и указываем расположение

PC-Coder part1 08

 

Без комментариев, можно пропустить

PC-Coder part1 09

 

Дальше сложнее. Заполняю по взятому где-то примеру. Насколько я понимаю, wxSmith – это графический конструктор. Больше ничего добавить не могу.

PC-Coder part1 10

 

Указываем где лежит wxWidgets

PC-Coder part1 11

 

Компилятор должен быть уже подхвачен, пути к объектным и бинарным файлам оставляем как есть. Так как у меня wxWidgets собрана как release, отмечаю только Release-конфигурацию.

PC-Coder part1 12

 

Дальше сложнее. Первые три чек-бокса соответствуют параметрам сборки wxWidgets – SHARED, MONOLITHIC, UNICODE. Следующие два — не разобрался. И последний устанавливаем для получения доступа к дальнейшей настройке.

PC-Coder part1 13

 

Дальше указываем, что будем создавать GUI-приложение

PC-Coder part1 14

 

В следующем окне необходимо выбрать необходимые компоненты графической библиотеки. Это потому что при сборке параметр MONOLITHIC имел значение 0. При значении 1 это окно не появляется, так как все компоненты собраны в единственный файл.

PC-Coder part1 15

 

В данном примере необходимы библиотеки Jpeg и Tiff. Без них при сборке получим кучу ошибок.

 

Примечание

Перечень подключаемых библиотек находится в файле <имя проекта>.cbp в папке проекта. Можно редактировать как обычный текстовый файл.

 

Добрались собственно к самому графическому редактору

PC-Coder part1 16

 

Переходим на вкладку Layout под сеткой. Переносим на форму элемент wxBoxSizer (второй слева). Получаем маленький квадратик, который будет растягиваться в соответствии с элементами, которые мы в него поместим.

Теперь перейдем на вкладку Standard и выберем элемент wxButton (четвертый слева, подпись 'OK'), и поместим его в wxBoxSizer

PC-Coder part1 17

 

 

Получаем кнопку с надписью "Label". В левом нижнем окне видно параметры элемента wxButton. Изменим подпись на "Проверка", чтобы проверить как отображается киррилица.

Двойным кликом на элементе wxButton открываем окно с кодом, причем курсор уже стоит в функции обработки нажатия на кнопку. Пишем туда функцию Close();

PC-Coder part1 18

 

Примечание:

Иногда возникает ситуация, когда добавляешь на форму элемент, но библиотеку в которой он лежит, не добавил. Как добавить библиотеку уже после настройки проекта, я не нашел. Поэтому изначально добавляю все. После того, как окончательно определились с элементами, можно корректировать список вручную — он находится в файле <имя проекта>.cbp в папке проекта.

 

Нажимаем кнопку "Build and run" (желтая шестеренка и зеленая стрелка). В нижнем окне наблюдаем отчет о компиляции. Если без ошибок, сразу запускается приложение. При нажатии на кнопку приложение закрывается. Весит примерно 3Мб.

PC-Coder part1 19

 

Начало положено, дальше можно играть с формами, компоновкой и так далее.



  • Очень содержательный пост. Плюсую! К посту можно ещё прикрепить .exeшник. Интересно скачать, попробовать так сказать правду))) Отмечу что процесс установки на первый взгляд кажется простым. По сравнению с установкой Qt так вообще как два пальца. Даже захотелось самому попробовать. Но пока нет времени.

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

Добавить комментарий