Настройка 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.