Настройка wxWidgets в Code::Blocks
Краткий справочник новичка по настройке wxWidgets с Code::Blocks в Windows [1]
Поддерживаемые компиляторы: MinGW или MSVC
Важные требования:
- Последняя версия Code::Blocks - необходимо успешно установить и запустить последнюю версию Code::Blocks отсюда: cтраница загрузки Code::Blocks
- Компилятор для Windows - необходимо правильно установить либо
- MinGW/GCC - бесплатный компилятор, или
- Microsoft Visual C++ Express бесплатно, но также требуется установка Windows SDK.
При загрузке официального релиза 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"
- Первая страница - это вступление, которое можно пропустить в будущем.
- Выберите версию wxWidgets которая нужна для работы. Если вы придерживались инструкции выше, нужно выбрать "wxWidgets 2.8.x".
- Задайте название и расположение проекта.
- Введите данные автора (не обязательно).
- Выберите опции автоматической генерации кода и файлов проекта.
- Выберите расположение wxWidgets. Крайне рекомендуется использовать глобальную переменную, для этого введите "$(#wx)" (без кавычек). Если прежде эта глобальная переменная не была определена, появится диалоговое окно глобальных переменных; в качестве базового пути выберите ваше местоположение установки wxWidgets. Остальные пути заполнять не требуется.
- Задайте опции отладочной (debug) и/или конечной (release) конфигураций проекта. Рекомендуется наличие хотя бы отладочной конфигурации.
- Выберите опции сборки wxWidgets. Далее следует выставить значения опций "wxWidgets Library Settings" в строгом соответствии с опциями сборки wxWidgets о которых говорилось выше. Другие настройки на этой странице, не связанные с параметрами сборки проекта wxWidgets - можно использовать их или не использовать, по своему предпочтению. Для того, чтобы избежать использования отладочной сборки wxWidgets (как рекомендовано), необходимо выбрать «Настроить Расширенные параметры» и затем оставить «Use __WXDEBUG__ and Debug wxWidgets lib» снятым на следующей странице.
- При необходимости выберите дополнительные библиотеки. Вы не должны выбирать любую из них для обычного использования.
Сборка и Запуск
[править]Нажмите "Сборка и запуск" (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.