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

Материал из Викиучебника — открытых книг для открытого мира

Краткий справочник новичка по настройке wxWidgets с Code::Blocks в Windows [1]
Поддерживаемые компиляторы: MinGW или MSVC



Важные требования:

  • Последняя версия Code::Blocks - необходимо успешно установить и запустить последнюю версию Code::Blocks отсюда: cтраница загрузки Code::Blocks
  • Компилятор для Windows - необходимо правильно установить либо

При загрузке официального релиза Code::Blocks, есть возможность загрузки пакета, который включает в себя полный набор инструментов MinGW/GCC.

  • Путь к файлам надлежащим образом определен - Убедитесь, что папка, содержащая исполняемые файлы компилятора (обычно C:\Program Files\CodeBlocks\bin, или C:\MinGW32\bin) добавлена в вашу переменную среды Windows PATH.


Загрузка исходного кода wxWidgets[править]

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

Рекомендованная к использованию версия wxWidgets 2.8.12. Нажмите сюда, чтобы скачать исходные коды wxWidgets 2.8.12 для Windows (wxMSW-2.8.12-Setup.exe; 12.2 MB). Можно также зайти на страницу загрузки wxWidgets чтобы проверить доступность новой стабильной версии. Настоятельно рекомендуется установить исходные коды wxWidgets с путем без пробелов. Требуется выбор тома (диска) с минимум 300 МБ свободного пространства.



Сборка wxWidgets[править]

  • Откройте окно командной строки для сборки. Если вы используете MinGW/GCC, проще будет воспользоваться стандартной командной оболочкой Windows (откройте меню "Пуск", нажмите кнопку "Выполнить...", введите "cmd" и нажмите OK). Если в меню "Пуск" нет кнопки «Выполнить...», то ее можно отобразить нажав правой кнопкой мыши кнопку "Пуск", далее выбираем пункт "Свойства", далее вкладка "Меню Пуск", кнопка "Настроить", поставить флажок у "Команда Выполнить", нажать кнопку "ОК". Если вы используете MSVC, следует использовать специальную командную оболочку, которая устанавливает правильные переменные среды. (Поищите в меню запуска Visual Studio пункт "Visual Studio 20XX Command Prompt" - это ярлык запуск оболочки с установленными переменными среды). Если вы используете версию MSVC, в которой необходимо скачать Platform SDK отдельно, убедитесь, что командная среда включает инструмент Platform SDK и пути к нему, а также стандартный компилятор с путями.
  • Перейдите в каталог сборки wxWidgets (<wxWidgets> в тексте далее - реальный путь распаковки его исходных кодов, например C:\wxWidgets-2.8.12):
cd /D <wxWidgets>\build\msw 

Примечание: /D флаг после cd может быть опущен из команды; просто это позволяет командной строке при необходимости изменить диски.

  • Выполните команду сборки. Рекомендованная команда для MinGW/GCC:
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport
  • Рекомендованная команда для MSVC:
nmake -f makefile.vc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1
  • Этот этап может занять длительное время ; сборка длится порядка 30 минут на быстрых компьютерах, а на медленных может занимать несколько часов.
  • Если используются более поздние версии GCC, во время сборки будет отображаться множество предупреждений. Это обстоятельство может заметно замедлить процесс сборки; можно перенаправить предупреждения в текстовый файл, добавив в команду сборки «2>errlog.txt» или подавить их полностью путем добавления «2>nul».

С последними версиями GCC (не с MSVC) необходим параметр «CXXFLAGS =-fno-keep-inline-dllexport» для предотвращения проблем с использованием памяти при выполнении финального шага сборки в монолитную DLL.

В разделе ниже под названием «Пояснение по опциям сборки wxWidgets» объясняется подробная информация о значении различных вариантов сборки: BUILD, SHARED, MONOLITHIC и UNICODE. Эти опции имеют критически важное значение, поскольку они определяют основу среды разработки wxWidgets используемой в дальнейшем. А именно, требуется дублировать их при запуске мастера создания проекта Code::Blocks' wxWidgets.


Создание проекта wxWidgets в Code::Blocks[править]

  • В стартовой странице Code::Block выберите "Create a new project"; или, откройте меню "File", выберите "New" и нажмите "Project..."
  • Выберите "wxWidgets project"
  1. Первая страница - это вступление, которое можно пропустить в будущем.
  2. Выберите версию wxWidgets которая нужна для работы. Если вы придерживались инструкции выше, нужно выбрать "wxWidgets 2.8.x".
  3. Задайте название и расположение проекта.
  4. Введите данные автора (не обязательно).
  5. Выберите опции автоматической генерации кода и файлов проекта.
  6. Выберите расположение wxWidgets. Крайне рекомендуется использовать глобальную переменную, для этого введите "$(#wx)" (без кавычек). Если прежде эта глобальная переменная не была определена, появится диалоговое окно глобальных переменных; в качестве базового пути выберите ваше местоположение установки wxWidgets. Остальные пути заполнять не требуется.
  7. Задайте опции отладочной (debug) и/или конечной (release) конфигураций проекта. Рекомендуется наличие хотя бы отладочной конфигурации.
  8. Выберите опции сборки wxWidgets. Далее следует выставить значения опций "wxWidgets Library Settings" в строгом соответствии с опциями сборки wxWidgets о которых говорилось выше. Другие настройки на этой странице, не связанные с параметрами сборки проекта wxWidgets - можно использовать их или не использовать, по своему предпочтению. Для того, чтобы избежать использования отладочной сборки wxWidgets (как рекомендовано), необходимо выбрать «Настроить Расширенные параметры» и затем оставить «Use __WXDEBUG__ and Debug wxWidgets lib» снятым на следующей странице.
  9. При необходимости выберите дополнительные библиотеки. Вы не должны выбирать любую из них для обычного использования.

Сборка и Запуск[править]

Нажмите "Сборка и запуск" (F9) чтобы проверить сборку и запуск приложения. Если все пойдет хорошо, ваше приложение wxWidgets должно появиться на экране.


Пояснение по опциям сборки wxWidgets[править]

Что означают опции BUILD, SHARED, MONOLITHIC, and UNICODE?

BUILD[править]

BUILD задает какую версию wxWidgets, отладочную (BUILD=debug) или конечную (BUILD=release), следует собрать. В подавляющем большинстве случаев нужна только конечная версия выпуска wxWidgets, так как отладка самого wxWidgets не потребуется. Вполне можно создавать отладочные сборки своих собственных программ, которые ссылаются на конечную сборку wxWidgets.

  • Отладочная (debug) сборка wxWidgets ' создает библиотеки с суффиксом "d", например "libwxmsw28d.a"/"wxmsw28d_gcc_custom.dll".
  • Отладочная (debug) сборка wxWidgets создает папку "mswd" или "mswud" в папке вывода библиотеки wxWidgets.
  • Конечная (release) сборка wxWidgets ' создает библиотеки без суффикса "d", например, "libwxmsw28.a"/"wxmsw28_gcc_custom.dll".
  • Конечная (release) сборка wxWidgets ' создает папку "msw" или "mswu" в папке вывода библиотеки wxWidgets.

SHARED[править]

SHARED задает какую версию wxWidgets, динамически связываемую DLL (SHARED=1) или статически связанную static (SHARED=0), следует собрать. При сборке DLL версии компиляция происходит быстрее и размер исполняемого файла меньше. Общий размер одного исполняемого файла плюс библиотеки DLL wxWidgets больше, но одну и ту же библиотеку DLL могут использовать несколько исполняемых файлов и в этом случае получается экономия места на диске.

  • Динамически связываемая DLL сборка wxWidgets создает библиотеки импорта (например, libwxmsw28.a) и библиотеки DLL (например, wxmsw28_gcc_custom.dll). При распространении своей программы библиотеку DLL следует включать в дистрибутив.
  • Статически связываемая static сборка wxWidgets создает только статические библиотеки (например, libwxmsw28.a), и в дальнейшем не потребуется распространять библиотеки DLL wxWidgets вместе с созданным приложением.

MONOLITHIC[править]

MONOLITHIC задает какую библиотеку, единую (MONOLITHIC=1) или многокомпонентную (MONOLITHIC=0) следует собрать. При монолитной сборке дальнейшие установка и разработка проекта выполняются намного проще, т.к. если используется DLL тип сборки библиотеки, то для распространения потребуется только одна библиотека DLL. При немонолитной (multilib) сборке, собираются несколько различных библиотек, и можно избежать связывания со всей базой кода wxWidgets тех программ, которые не нуждаются в ней. Нужно быть полностью уверенным в своих действиях выбирая правильный компонент библиотеки.

  • Монолитная monolithic сборка wxWidgets создает единую библиотеку импорта wxWidgets (такую как libwxmsw28u.a) и единую DLL (такую как wxmsw28_gcc_custom.dll).
  • Немонолитная multilib сборка wxWidgets создает несколько библиотек импорта (libwxbase28u.a, etc.) и несколько DLL.
  • Дополнительные статические библиотеки всегда создаются с любой сборкой wxWidgets (libwxexpat.a, libwxjpeg.a, и т.д.). Эти библиотеки обычно не требуются при использовании DLL сборки wxWidgets, но они нужны при использовании статической сборки.

UNICODE[править]

UNICODE задает использование в библиотеке wxWidgets и в создаваемой программе поддержки символов Юникода. Эта возможность используется в большинстве программ для ОС Windows 2000 и более поздних версий. Более ранние версии Windows не имели необходимой поддержки Юникода. Вы всегда должны использовать макросы _("string") и _T("string") wxWidget для обеспечения того, чтобы жестко закодированные строки были правильного типа.

  • Юникод сборка wxWidgets (UNICODE=1) создает библиотеки с суффиксом "u", например, "libwxmsw28u.a"/"wxmsw28u_gcc_custom.dll".
  • Юникод сборка wxWidgets создает папку "mswu" или "mswud" в папке вывода библиотеки wxWidgets.
  • ANSI сборка wxWidgets (UNICODE=0) создает библиотеки без суффикса "u", например, "libwxmsw28.a"/"wxmsw28_gcc_custom.dll".
  • ANSI сборка wxWidgets создает папку "msw" или "mswd" в папке вывода библиотеки wxWidgets.

См. также[править]

Ссылки[править]

  1. Code::Blocks wiki: WxWindowsQuickRef