Как скомпилировать wxwidgets в codeblocks
Перейти к содержимому

Как скомпилировать wxwidgets в codeblocks

  • автор:

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

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

  • Путь к файлам надлежащим образом определен — Убедитесь, что папка, содержащая исполняемые файлы компилятора (обычно C:\Program Files\CodeBlocks\bin, или C:\MinGW32\bin) добавлена в вашу переменную среды Windows PATH.
  • 1 Загрузка исходного кода wxWidgets
  • 2 Сборка wxWidgets
  • 3 Создание проекта wxWidgets в Code::Blocks
  • 4 Сборка и Запуск
  • 5 Пояснение по опциям сборки wxWidgets
    • 5.1 BUILD
    • 5.2 SHARED
    • 5.3 MONOLITHIC
    • 5.4 UNICODE

    Загрузка исходного кода 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 ( в тексте далее — реальный путь распаковки его исходных кодов, например C:\wxWidgets-2.8.12):
    cd /D \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.

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

    • Уроки wxSmith
    • Уроки wxSmith: Hello world
    • WxWidgets Hello World в Visual C++ и wxFormBuilder

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

    Создание в Code::Blocks графических приложений с помощью wxWidgets

    В этой иллюстрированной статье описано, как можно создавать графические приложения в CodeBlocks с помощью библиотеки инструментов wxWidgets. Статья предназначена для новичков, но предполагает, что читатель уже не испытывает проблем с созданием консольных приложений вида «Hello World». CodeBlocks можно скачать c codeblocks.org, wxWidgets c wxwidgets.org.

    wxWidgets — это библиотека графических инструментов (по-английски Widget toolkit). Она необходима для того, чтобы в среде CodeBlocks можно было создавать программы с графическим интерфейсом. Считаю это лучшим решением, чем GTK+, которая более ориентирована на Линукс-платформы и создаёт интерфейсы, тяжело работающие на Windows. Библиотека преднаначена для использования на огромном числе различных платформ, у каждой из которых свои особенности. И кроме того, зависит от некоторых элементов окружения. Поэтому создатели wxWidgets не дают готовые дистрибутивы, а предлагают пользователям самостоятельно их скомпилировать. Порт библиотеки на каждую платформу имеет своё название. Для варианта на Windows используется наименование wxMSW (wxWidgets MicroSoft Windows), на это слово следует ориентироваться при чтении документации.

    Нижеизложенная статья является иллюстрированным пересказыванием шагов, приведённых на официальном сайте wiki.codeblocks.org и в документе \docs\msw\install.txt , вложенном в распространяемые исходники. В некоторых местах Интернета можно отыскать немного отличающиеся наборы параметров для коппиляции. Автор данной статьи не берётся судить, какой подход более корректен, следует официальным документам и сразу предупреждает, чтов результате при создании графических элементов в CodeBlocks отмечены некоторые глюки. В качестве ОС используется Windows 7, компилятор MinGW в разновидности GCC. Именно этот компилятор идёт в комплекте с CodeBlocks, он также может быть установлен отдельно с сайта mingw.org. Если используете другой компилятор, то лучше поищите более специализированную инструкцию.

    1. Исходим из того, что в вашей системе уже имеется компилятор С++, но путь к нему ещё не занесён в систему. Выполним это. Компилятор С++ нужен, поскольку на этом языке написан исходный код wxWidgets. И если у вас установлен и работает CodeBlocks, то значит, имеется компилятор MinGW/GSS. Необходимо найти папку с этим компилятором и в ней подпапку bin. Если CodeBlocks установлен в систему (т.е. не портативная версия), то быстрее всего это будет C:\Program Files\CodeBlocks\MinGW\bin . Скопируйте в буфер полный адрес данной подпапки.

    2. Из меню Пуск зайдите в Control Panel > System > Advanced system settings > Environment Variables. Появится окно Environment Variables .
    (Примечание: вы можете сразу попасть в окно System, если воспользуетесь горячей клавишей +. Рекомендую её запомнить.)

    Скриншок окна

    3. В списке » System variables » найдите Path . Нажмите кнопку «Edit. «. В конце списка папок поставьте точку с запятой и добавьте ранее скопированный путь. Будьте очень внимательны на этом шаге: вы конфигурируете всю Windows. Если вначале у вас там было, к примеру,
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
    то после внесения должно получиться
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\CodeBlocks\MinGW\bin

    4. Скачайте исходный код wxWidgets с wxwidgets.org/downloads, вариант «Windows ZIP» (не Installer). Традиционно рекомендуется брать последний стабильный релиз (не «development»). В настоящий момент это 3.0.3. Если хотите релиз 3.1.0, то учтите, что официальная версия CodeBlocks 16.01 его не поддерживает, вам нужна редакция «Nightly builds». (о ней в конце статьи)

    5. Распакуйте архив в папку, в путях к которой нет пробела. К примеру, C:\wxWidgets .

    Окно

    6. Запустите CMD (интерпретатор командной строки). Обычно это делается обычно через нажатие на клавиатуре + и пропечатывание в появившемся окне команды cmd.

    окно CMD при переходе в папку wxWidgets

    7. В CMD перейдите в папку с распакованным wxWidgets и углубитесь в поддеректорию build\msw . Если устанавливаемая библиотека у нас находиться по адресу C:\wxWidgets , то перейти туда можно командой » cd \wxWidgets\build\msw » (без кавычек). ( cd означает «change directory» — сменить директорию. А \ означает, что адрес новой директории нужно вычислять, начиная с корня диска.)

    окно CMD после вставки команды компиляции wxWidgets

    8. Скопируйте в командную строку страшную команду
    mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport
    Она взята с wiki.codeblocks.org. Внизу страницы есть краткое объяснение, что означает каждый компонент. Также за разъяснениями можно обратиться в конец упоминавшегося документа \docs\msw\install.txt из установочного дистрибутива.

    Успешное завершение компиляции библиотеки

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

    Занесение новой Environment varialbe в систему

    (Создатели wxWidgets рекомендуют добавить в систему environment variable WXWIN, указывающую на папку с установленным wxWidgets. Это в дальнейшем позволит производить некоторые действия более коротким способом. Производится в том же окне, где мы в самом начале добавляли в систему путь к компилятору MinGW. Только в этот раз используйте кнопку New. Подробности не расписываю. Если это действие приводит вас в смятение, то пропустите. На работу wxWidgetx внутри CodeBlocks наличие этой переменной в системе не сказывается.)

    Второй этап. wxWidgets уже скомпилирован, теперь все дальнейшие операции выполняем только внутри CodeBlocks. Для создания программы с графическим интерфейсов выполните следующее:
    1. Убедитесь, что у вас подключён плагин wxSmith. Для этого зайдите в главно меню на Plugins > Manage plugins. Плагин традиционно отображается в самом низу. Достаточно включить сам wxSmith. Дополнительные модули «wxSmith — Aui», «wxSmith — Contrib Items» и «wxSmith — MIME plugin» по желанию. Влияния этих модулей на удобство и безглючность реализации основного функционала базовых элементов замечено не было.

    2. Традиционное File > New > Projects.

    Окно создания нового проекта

    3. В списке шаблонов выбрать » wxWidgets project «.

    Выбор версии wxWidgets

    4. На следующем экране wxWidgets version выбираем ту версию, которую подключаем. В нашем случае » wxWidgets 3.0.x «.

    5. Далее идут несколько стандартных экранов. Всё также, как и при создании консольных приложений.

    6. Preferred GUI Builder : wxSmith (если выбрать None, то инструментов WYSIWYG не будет, а wxFormBuilder — это внешнее приложение, которое нужно отдельно устанавливать.)
    Application Type : Рекомендую выставить Frame Based , поскольку Dialoge Based плохо стыкуется с wxWidgets, именно в этом режиме наблюдается подавляющее большинство глюков.

    Выбор GUI и типа создаваемого приложения

    В двух словах об особенностях данных типо в. Dialog Based предназначен для маленьких приложений с интерфейсом вида ‘нажал на кнопку — выскочило сообщением’. Frame Based предна значен для серьёзных приложений, подразумевающих наличие меню, строки состояния и многокомпонентных пользовательских окон. Почти все программы разрабатываются на Frame Based, так что кривость wxWidgets на Dialog Based не является серьёзной проблемой.

    7. wxWidgets’ location . При нажатии на многоточие выскочит окно запроса, в нём в поле base укажите папку, где вы разместили wxWidgets. После закрытия окна этот адрес автоматически перенесётся в wxWidgets’ location. (В будущем вы всегда сможете подправить значение этой переменной через Settings > Global variables. )

    Прописывание значения глобальной переменной wx

    Указание расположения папки с wxWidgets

    Настройка параметров компилятора

    8. На следующем окне уберите галочку с » Create Debug configuration «, поскольку библиотека wxWidgets скомпилирована нами только в режиме Release. Нам нет смысла залезать в отладку компонентов самого wxWidgets.

    Настройка параметров компилятора -2

    9. Следующем шаге в группе полей «wxWidgets Library Settings » необходимо проставить галочки в соответствии с теми параметрами, с которыми мы ранее скомпилировала wxWidgets. Т.е. все три опции должны быть отмечены. В группе полей «Miscellaneous Settings» — на ваш выбор.

    Рекомендуется отметить » Configure Advanced Options » и на следующем шаге убедиться, что опция » Use_WXDEBUG_and Debug wxWidgets lib » пуста (нам не нужно заниматься отладкой самого wxWidget). » Release Target » лучше переставить в » GUI Mode «, чтобы создавалось чисто-оконное приложение. В случае выбора «Console Mode» одновременно создадутся два окна: консольное и оконное.

    Настройка параметров компилятора -3

    10. Всё сделано. Теперь можно создавать графический интерфейс. У процесса есть свои особенности, которые нужно понять. Для тестирования можете попробовать создать кнопку, произведите на ней двойной щелчок и в появившемся коде внутри функции ::OnButton1Click прописать
    wxString msg = «Hello wxWidgets!»;
    wxMessageBox(msg, _(«Very clever text»));

    Код, вызывающий простейшее окно с сообщением

    wxWidgets работает

    Если собираетесь в будущем регулярно создавать графические интерфейсы посредтсвом wxWidgets, то ознакомьтесь с программой wxFormBuilder — возможно, что создавать интерфейс через неё будет удобнее.

    Примечание:
    Если имеете в системе внешний компилятор, вроде MinGW, то лучше установите CodeBlocks в редакции «Nightly builds». Делается это просто: на форуме открываете тему с последним релизом, скачиваете 3 архива с компонентами программы (это сама программа и две библиотеки от третих разработчиков) и распаковываете их в одну папку, не содержащую в своём пути пробелов (к примеру, С:\CodeBlocks).

    WxWidgets + CodeBlocks + MinGW «на пальцах»

    Освоил консоль в Win+Codeblocs+MinGW. Теперь хочу попробовать рисовать «окошки» (в редакторе окошек, а не только кодом, как в WinAPI). Остановился на wxWidgets (Qt не нравится, да и лицензия не free).

    Перебрал кучу инструкций по «настройке». Некоторые требуют сначала скачать wxWidgets, а потом его компилировать. Некоторые говорят что MinGW не подходит — нужен GCC. Слишком много устаревших инструкций.
    Самую «компактную» (но относительно «мутную») нашел здесь (http://eax.me/wxwidgets-examples/), но она 4х летней давности (для С++ это много).

    Обьясните какие первые «подводные камни» мне грозят.
    Надо переустановить весь инструментарий или просто надо подключить внешнюю wxWidgets в мою сборку?
    Есть ли готовые «сборки» чтобы не заморачиваться со сборкой инструментов? (не охота изучить мегабайты хелпов и потратить неделю ради HelloWorld)
    Можно ли скачать уже «скомпилированую» под Win64? или компилировать обязательно?

    94731 / 64177 / 26122
    Регистрация: 12.04.2006
    Сообщений: 116,782
    Ответы с готовыми решениями:

    Странности с wxWidgets и CodeBlocks и с Boost
    Я совсем в программировании новичок. Помогите разобраться. Скачал либы wxWidgets и Boost.

    Дайте совет по связке wxWidgets+codeblocks
    Хочу попробовать создание программы с оконным интерфейсом. С горем пополам связку.

    CodeBlocks и WxWidgets
    1. Я поработал немного с CodeBlocks в Виндовс, скомпилировал WxWidgets, создал консольное.

    CodeBlocks Msys2 и wxWidgets
    Windows 10 Home 64 bit. Установил CodeBlocks из codeblocks-17.12-nosetup.zip простым копированием.

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

    Эксперт С++

    4984 / 3091 / 456
    Регистрация: 10.11.2010
    Сообщений: 11,169
    Записей в блоге: 10

    Есть готовые сборки, но они не такие актуальные. Проект переехал на github, поэтому новых сборок скорее всего не будет.
    Самый свежий код (из github) должен без проблем собираться через MSYS2.

    420 / 357 / 47
    Регистрация: 22.05.2013
    Сообщений: 2,518

    ЦитатаСообщение от castaway Посмотреть сообщение

    Есть готовые сборки, но они не такие актуальные. Проект переехал на github, поэтому новых сборок скорее всего не будет.

    Это я понял! И давно скачал! Но как его ПРИКРУТИТЬ к CodeBlocs+MinGW?
    Их надо скомпилировать?
    Нужны танцы с бубном по настройке?

    В кодеблоксе есть ВСТРОЕННАЯ система для нового проекта на WxWidgets.
    Требует лишь указать папку и версию (3.х), но потом ругается что не видит какой-то Дебюг конфигурации.
    После всех игноров («да продолжить не смотря на. «) получаю проект, который ругается на строчке

    #include "wx/setup.h"

    Похоже надо было еще что-то куда-то прописать. И не уверен что такая ошибка будет одна.

    Скачать с гит-хаба было самым простым. Что делать с этим дальше.

    Эксперт CЭксперт С++

    5277 / 2364 / 342
    Регистрация: 20.02.2013
    Сообщений: 5,763
    Записей в блоге: 20

    Tester64, посмотри как я прикручивал Boost и Clang с помощью msys2 (как раз в Code Blocks). По аналогии попробуй сделать.

    420 / 357 / 47
    Регистрация: 22.05.2013
    Сообщений: 2,518

    ЦитатаСообщение от gru74ik Посмотреть сообщение

    По аналогии попробуй сделать.

    Спасибо, Вы «открыли мне еще один глаз»!

    Пока не получилось. отложу на потом.
    Но нашел нужный(вроде) пакет:

    pacman -S mingw-w64-i686-wxWidgets

    Но С++ похоже где-то не правильно подхватывает пути. Меня завалили другой работой (с++ это пока только хобби), попробую вернуться к этой теме через недельку.

    Жаль что нет сборки вроде CodeBlocs+MinGW+wxWidgets+Boost(там вроде сетевые компоненты были)+Clang(еще не понял зачем). Один архив скачал, распаковал на C:/D:, запустил пару батников для настройки и работай! как бы сильно это помогло новичкам в опенсорсе. Недели уходят на установку инструментов! Делфи именно на этой «сборке» и развил такую популярность!

    Эксперт CЭксперт С++

    5277 / 2364 / 342
    Регистрация: 20.02.2013
    Сообщений: 5,763
    Записей в блоге: 20

    ЦитатаСообщение от Tester64 Посмотреть сообщение

    (Qt не нравится, да и лицензия не free).

    Эксперт CЭксперт С++

    5277 / 2364 / 342
    Регистрация: 20.02.2013
    Сообщений: 5,763
    Записей в блоге: 20
    Tester64, и да, вот посмотри: Библиотека инструментов wxWidgets. Сборка (tutorial)
    420 / 357 / 47
    Регистрация: 22.05.2013
    Сообщений: 2,518

    ЦитатаСообщение от gru74ik Посмотреть сообщение

    GPL! Насколько я понял, это значит что делая проект я ОБЯЗАН открывать его исходники.
    Я могу сделать бесплатную программу! Но исходники — это личное! Не хочу изучать инструмент который изначально сажает меня в «стеклянную комнату» и плодит мне конкурентов.
    Да и скорость сборки у Qt не самая шустрая и требования к харду приличные.

    ЦитатаСообщение от gru74ik Посмотреть сообщение

    и да, вот посмотри: Библиотека инструментов wxWidgets. Сборка (tutorial)

    Находил почти сразу (на первых страницах гугления), среди соти других инструкций. Этой статье 1.5 года. За это время вполне могли поменять wx и сделать другую систему подключения. Могли не заморачиваться с компиляцией. Могли встроить в комплект CodeBlocks.

    Через недельку-две еще раз попробую собрать HelloWorld. (скорее всего проще будет полностью пересобрать ВСЕ инструменты — возможно они не правильно были установлены)

    Эксперт С++

    4984 / 3091 / 456
    Регистрация: 10.11.2010
    Сообщений: 11,169
    Записей в блоге: 10

    ЦитатаСообщение от Tester64 Посмотреть сообщение

    Насколько я понял, это значит что делая проект я ОБЯЗАН открывать его исходники.
    На сколько мне известно, лицензия GPL не обязывает открывать исходники (могу ошибаться).
    70 / 64 / 40
    Регистрация: 17.02.2014
    Сообщений: 265

    У wxWidgets слабая документация, описаны только самые важные методы, про protected члены и методы узнаешь можно сказать из ковыряния исходников, + к этому немного напрягает черезмерное ООП — чуть ли не каждая переменная завернута в класс. Вообщем если нужна будет помощь распишу подробно как собирать, буквально пару дней назад собирал для CodeBlocks Mingw x86_64, единственное, что раздражает в начальных семплах постоянно вылезают Deprecated варнинги.

    Ушел с форума

    Эксперт С++

    16470 / 7433 / 1187
    Регистрация: 02.05.2013
    Сообщений: 11,617
    Записей в блоге: 1

    ЦитатаСообщение от Tester64 Посмотреть сообщение

    GPL! Насколько я понял, это значит что делая проект я ОБЯЗАН открывать его исходники.
    С GPL — да. А с LGPL нет.
    420 / 357 / 47
    Регистрация: 22.05.2013
    Сообщений: 2,518

    ЦитатаСообщение от smartpointer Посмотреть сообщение

    буквально пару дней назад собирал для CodeBlocks Mingw x86_64, единственное, что раздражает в начальных семплах постоянно вылезают Deprecated варнинги.

    А вообще реально собрать все один (относительно)портабл архив? Вместе с HelloWord как основным проектом? Думаю у многих был бы на эту сборку спрос. (как на Денвер — сборку «php+mysql+apach+. » — скачал, распаковал и пользуйся — не надо часы тратить на изучение и установку каждого компонента, как и на их связывание). Я настроил CodeBlocks+MinGW и на компиляцию в консоли через make (довольно сложные утилиты и тяжелые бат-файлы). По идее можно полностью переносить на другой комп без переустановки с сохранением путей. Даже обошел прописывание в path путей к mingw (через хулиганство со свойствами «мой компьютер») указав пути в кодеблоксе и в батниках. Может и дальше можно «развить» сборку?

    Жутко бесят «танцы с бубном». на первом этапе. Уже 10й раз думал перейти от консоли к графике. Раза 2 ставил и стирал Qt (20-30 секунд ждать появления первого ПУСТОГО окошка после 2-4х секунд на делфи — это издевательство. Консоль в MinGW собирается 5-6 секунд). Про количество неудачных «подходов» к буст — даже вспоминать не хочется (аж бесит тема — так и не смог за пол года запустить на буст сокет сервер)

    ЦитатаСообщение от smartpointer Посмотреть сообщение

    У wxWidgets слабая документация, описаны только самые важные методы, про protected члены и методы узнаешь можно сказать из ковыряния исходников, + к этому немного напрягает черезмерное ООП — чуть ли не каждая переменная завернута в класс.

    Мне НЕ нужны сложные компоненты! В худшем случае буду сам рисовать свой компонент на канвасе. (а ко всему в классах привык — даже String предпочел в свой класс завернуть, да и последним языком была ява) Мне нужен удобный инструмент для БЫСТРОГО вызова функций разработанных в консоли (уже разработал линуксоый режим с внутренними командами, но это МЕДЛЕННО — «t1,enter», «t2, enter» — соскучился по кнопкам) и для УДОБНОГО вывода результата этих функций (текст и цифры) на экран разными цветами и размерами шрифтов (а не одна бегущая строка в консольном окне).

    Мне не нужен сложный дизайн! Предстоит запуск долгих «случайных» тестов (почти математических). При этом может быть несколько состояний одновременно — от каждой вызванной функции и от массового запускателя. Даже не представляю как сделать это читабельным в консоли (минимум два списка иногда в процессе хочется полистать — последниее 100 команд и последние 100 строк результатов выполенения этих команд).

    Компиляция библиотеки wxWidgets в Code::Blocks

    Если вам нужна кроссплатформенная библиотека для создания интерфейса программы, то стоит в первую очередь обратить на wxWidgets или Qt. Про Qt много всего интересного написано на сайте Блог программиста, однако я обычно предпочитаю wxWidgets за чуть меньший размер dll-ок, которые необходимо при этом добавлять в программу, да и компилировать программу с ней несколько легче. С другой стороны, wxWidgets — это библиотека исключительно для построения интерфейсов, в то время как Qt — это целый фреймворк, который имеет множество дополнительных возможностей, напрямую с интерфейсом не связанные. Как видно из заголовка, эта статья будет посвящена wxWidgets.

    На мой взгляд для кроссплатформенной разработки на C++ в качестве среды разработки больше всего подходит Code::Blocks, с каждой версией этой IDE пользоваться становится все легче, и все лучше она работает «из коробки». В этой статье мы рассмотрим процесс компиляции библиотеки wxWidgets в этой среде.

    На странице загрузки wxWidgets можно скачать уже скомпилированные объектные файлы для этой библиотеки, но иногда нужно самому скомпилировать библиотеку, например, если требуется задать какие-то параметры компиляции или скомпилировать каким-нибудь специфическим компилятором.

    В этой статье мы рассмотрим компиляцию wxWidgets с помощью компилятора mingw, который прилагается с Code::Blocks. На всякий случай напомню, что mingw — это компилятор GCC под Windows.

    Компиляция библиотеки wxWidgets

    0. Качаем Code::Blocks Главное скачать Code::Blocks с интегрированным mingw.

    1. Устанавливаем Code::Blocks. Здесь нет ничего особенного, под Windows жмем Next -> Next -> Next. Все как обычно.

    2. Установка переменной окружения PATH. Code::Blocks может использовать как сторонние компиляторы, так и интегрированный mingw (именно этот случай мы рассматриваем), который после установки будет располагаться в папке C:\Program Files (x86)\CodeBlocks\MinGW\. Чтобы было проще использовать этот компилятор, желательно добавить этот путь в переменную окружения PATH. В принципе, этого можно не делать, но тогда во многих случаях при работе с тем же компилятором из командной строки придется или указывать полный путь до компилятора, или добавлять его в ту же самую переменную при каждом сеансе работы. ИМХО, лучше установить эту переменную окружения сразу.

    Для того, чтобы установить переменную окружения под Windows, нужно попасть в диалог «System Properties» (поскольку у меня англоязычная Windows, все названия я буду приводить на английском языке, думаю, что найти их русскоязычный аналог не составит труда). Этот диалог достаточно глубоко закопан, чтобы в него попасть под Windows 8.1, нажимаем правую кнопку мыши на кнопке Пуск, выбираем пункт меню System. Откроется следующее окно:

    system.png: 800x640, 36k (19.10.2014 18:16)

    Слева выбираем пункт Advanced system settings и попадаем в диалог «System Properties». Затем на вкладке Advanced нажимаем кнопку Environment Variables

    advanced.png: 426x475, 13k (19.10.2014 18:15)

    Откроется диалог «Environment Variables», в нижнем списке которого нужно найти переменную Path.

    variables.png: 394x437, 12k (19.10.2014 18:16)

    Значение этой переменной у вас будет скорее всего другое. Дважды щелкаем на эту переменную, и в открывшемся диалоге добавляем в конец через точку с запятой путь до запускаемых файлов mingw, т.е. в нашем случае до C:\Program Files (x86)\CodeBlocks\MinGW\bin\.

    3. Качаем wxWidgets. Нужно скачать файл из раздела «Source Code», для простоты будем считать, что скачиваем архив с исходниками в формате zip или 7z.

    wx_download.png: 299x289, 15k (19.10.2014 18:17)

    4. Распаковываем архив с wxWidgets в какую-нибудь папку, например, в C:\Library\wxwidgets\.

    5. Открываем командную строку с помощью команды cmd.

    6. В архиве wxWidgets есть специальная папка («build\msw»), в которой хранятся файлы проекток для компиляции библиотеки под Windows с помощью различных сред. Переходим в эту папку с помощью команды

    cd «C:\Library\wxwidgets\build\msw\»

    7. Если вы уже пытались (безуспешно) или с другими параметрами компилировать wxWidgets, то нужно предварительно удалить следы предыдущей компиляции. Разумеется, можно просто удалить папку с распакованными файлами библиотеки, а можно воспользоваться скриптом makefile. На самом деле удаление результатов компиляции с помощью makefile может быть полезно, если вы хотите заново перекомпилировать wxWidgets с каким-то определенным набором параметров, в то время как файлы, удачно скомпилированные с другими параметрами компиляции, оставить. Далее (в п. 8) мы будем компилировать библиотеку с использованием параметров USE_XRC=1 SHARED=1 MONOLITHIC=1 UNICODE=1 USE_OPENGL=1 BUILD=release, поэтому команда удаления должна иметь точно такие же параметры с добавлением команды clean в конце:

    mingw32-make.exe -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1
    UNICODE=1 USE_OPENGL=1 BUILD=release clean

    mingw32-make.exe -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=0
    UNICODE=1 USE_OPENGL=1 BUILD=release clean

    Если во время выполнения этой команды вы получите ошибку о том, что команда mingw32-make не найдена, значит, вы не добавили путь до этой команды в переменную окружения PATH (см. п. 2).

    8. Осталось в той же папке C:\Library\wxwidgets\build\msw\ запустить компиляцию исходников библиотеки. Теперь мы должны выбрать, компилируем мы библиотеку как монолитную (с параметром компиляции MONOLITHIC=1), когда будет создана одна большая dll-ка, или не монолитную, когда различные пакеты будут собраны в отдельных dll-ках (с параметром компиляции MONOLITHIC=0).

    Забегая вперед, вот результирующие файлы, после компиляции wxWidgets в монолитном режиме:

    А вот список файлов при компиляции в разные dll-ки:

    files_many.png: 610x620, 43k (19.10.2014 18:15)

    На странице вики wxWidgets рекомендуются такие параметры компиляции:

    mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1
    UNICODE=1 USE_OPENGL=1 BUILD=release

    • Параметр USE_XRC=1 указывает, что при использовании библиотеки можно будет использовать формат XRC для описания интерфейса — формат, основанный на XML/

    Если мы хотим скомпилировать библиотеку не в монолитном режиме, то используем следующую команду:

    mingw32-make.exe -f makefile.gcc MONOLITHIC=0 USE_XRC=1 SHARED=1
    UNICODE=1 USE_OPENGL=1 BUILD=release

    Если вы откроете файл makefile.gcc, то сможете увидеть и другие параметры, позволяющие исключить из библиотеки некоторые возможности, например, ненавистные многим риббоны (USE_RIBBON). Оперируя такими параметрами, возможно, вы сможете уменьшить размер создаваемых dll-ок, что наиболее актуально для компиляции в монолитном режиме.

    9. Ждем окончания компиляции. Этот процесс может занять более 10 минут. К счастью, у wxWidgets нет никаких сторонних зависимостей, поэтому, как правило, компиляция завершается удачно. После окончания компиляции в папке C:\Library\wxwidgets\lib\gcc_dll\ будут созданы объектные файлы и dll-ки, те, что были показаны на картинках выше в п. 8.

    Компиляция проекта с использованием wxWidgets

    Давайте теперь создадим тестовый проект в Code::Blocks, чтобы убедиться, что wxWidgets скомпилировался нормально, а заодно настроим Code::Blocks для работы с этой библиотекой. Поскольку данная среда разработки уже знает о существовании wxWidgets, то настройка будет минимальной — надо будет указать только путь до папки с библиотекой.

    10.1. Создаем новый проект. Для этого в Code::Blocks выбираем пункт меню «File — New — Project. «.

    10.2. В открывшемся диалоге в разделе «Projects» выбираем тип проекта «wxWidgets project».

    10.3. Следующее окно диалога не предсталяет особой ценности — это окно приветствия для данного типа проекта. Внизу есть флажок, установив который, вы избавитесь от показа этого окна в будущем.

    10.4. В следующем окне нужно выбрать версию wxWidgets. Для всех примеров этой статьи я использовал wxWidgets 3.0.2, поэтому выбираем пункт «wxWidgets 3.0.x».

    Если у вас в списке нет нужной версии wxWidgets, вам нужно обновить Code::Blocks.

    10.5. Далее вводим название проекта и путь, где он будет создан.

    10.6. В следующем окне можно заполнить поля, рассказывающее об авторе. Эти поля являются не обязательными, их можно оставить пустыми.

    10.7. Затем выбираем инструмент, с помощью которого мы будем создавать интерфейс (группа переключателей «Preferred GUI Builder»). Я обычно предпочитаю создавать GUI вручную (переключатель «None»), но можно использовать инструмент для создания интерфейса с помощью мышки.

    В этом же окне выбирается тип приложения («Application Type»): главное окно будет диалогом («Dialog Based») или полноценным окном («Frame Based»). Первый тип подходит для небольших приложений, при этом у диалога не может быть строки статуса и главного меню.

    10.8. В следующем окне нужно указать путь до библиотеки wxWidgets, куда вы распаковывали скачанный архив.

    10.9. Если вы впервые создаете проект на основе wxWidgets, то Code::Blocks покажет вам еще один диалог, где нужно указать путь до wxWidgets еще раз. Это нужно уже для глобальных настроек IDE.

    При этом вы можете указать конкретные пути, где у вас расположены вложенные папки «include», «lib» и т.д. Если эти поля оставить пустыми, то будут использоваться пути по умолчанию. Эти поля могут быть полезны, если вы переименуете, например, папку «lib» с целью создания другой папки «lib», скомпилированной с другими параметрами. Поскольку мы ничего такого не делали, оставим дополнительные поля пустыми.

    В будущем эти параметры можно поменять, выбрав пункт меню «Settings — Global variables. «

    10.10. Затем нужно установить (или подтвердить) некоторые параметры для компиляции — тип компилятора и папки для отладочной и релизной версии сборки нашего проекта.

    10.11. Следующее окно уже более интересное и важное.

    Здесь мы должны установить параметры, с которыми была скомпилирована библиотека wxWidgets.

    • Если при компиляции был установлен параметр SHARED=1, должен быть установлен флажок «Use wxWidgets DLL», иначе он должен быть снят.

    10.12. Если вы компилировали библиотеку wxWidgets только в релизном режиме (с параметром BUILD=release), то при переходе к следующему окну Code::Blocks предложит в режиме отладки нашего приложения использовать также релизную версию wxWidgets. Придется согласиться.

    10.11. Если вы компилировали wxWidgets не как монолитную библиотеку, то будет показано еще одно окно, в котором нужно выбрать, какие пакеты wxWidgets вам понадобятся (в монолитном режиме они все скомпилены в одну dll-ку).

    Можно выбирать несколько пуктов списка (или ничего не выбирать).

    10.12. После этого мастер создания проекта завершит совю работу, и будет создан новый проект.

    codeblocks_01.png: 1180x1024, 95k (19.10.2014 18:15)

    10.13. Теперь можно в верхней панели выбрать цель компиляции (Release или Debug) и скомпилировать проект (выбрав, пункт меню «Build — Build» или «Build — Rebuild»).

    Проект должен скомпилироваться без ошибок, и его можно запустить с помощью пункта меню «Build — Run». Результат будет выглядеть следующим образом:

    10.14. После компиляции проект без проблем запускается из Code::Blocks, но exe-шник не будет запускаться обычными способами (из файлового менеджера), поскольку рядом с exe-шником нет нужных dll-ок из wxWidgets. Скопировать их можно из папки C:\Library\wxwidgets\lib\gcc_dll\ (или ее аналога, если вы распаковывали wxWidgets в другую папку). Какие именно понадобятся dll-ки уже зависит от проекта. Но в любом случае при запуске скомпилированного exe-шника Windows напишет, какого файла не хватает.

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

    На этом все, жду ваших комментариев и уточнений. Надеюсь, что статья окажется вам полезной.

    Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

    Рейтинг 4.7 / 5 . Всего 63 голос(а, ов)

    Виктор 04.12.2015 — 15:05

    Компиляция библиотеки wxWidgets в Code::Blocks

    Спс. Если бы не нашел Вашу статью, наверное, плюнул бы на wxWidgets. Было 5 неудачных попыток его установки.

    Сергей 12.12.2015 — 12:22

    Компиляция библиотеки wxWidgets в Code::Blocks

    единственное рабочеспасобное описание автору спасибо

    Ваня 04.02.2016 — 11:51

    Благодарность! Всё заработало!

    Виталий 22.02.2016 — 19:46

    танцы с бубном

    Windows 10 базируется на 8 и 8.1, так какого лешего у меня не собирается, делаю все по инструкции, объясните более подробный путь, а то не все очевидно

    Виталий 05.06.2016 — 10:34

    танцы с бубном

    От предидущего комента через несколько дней нашел другой способ, все заработало с версией 3.0.1, после выхода 3.1.0 для винды 10 29 февраля повторил, успешно, на сайте есть собранные библиотеки под ms visual cpp и для gcc

    Moose 07.09.2016 — 12:11

    не работает

    Пытался компилировать версию 3.1.0 — не получается.
    1. Ругается на отсутствие Debug, но пишел не как у вас предупреждение, а что Debug Target will not be created.
    2. При попытке собрать проект пишет, что не существует файл setup.h

    Все остальные настройки как у вас.

    Gabd 27.10.2016 — 07:08

    должно работать

    Имхо, надо проверить пути (Project — Build options. — Search directories) и глобальные переменные (Settings — Global variables. — wx)

    gress 10.11.2016 — 21:29

    не запстиля тест

    ошибка ld.exe||cannot find -lwxmsw30ud|

    Иван 30.01.2017 — 20:52

    Компиляция библиотеки wxWidgets в Code::Blocks

    компилировал tdm-gcc 5.1, напрочь отказывалась собираться, помогло добавление опции CXXFLAGS=-sdt=gnu++11

    Александр 30.10.2018 — 10:49

    Не нравится Unicode

    Добрый день.
    Компиляция началась, но потом выдалось что «Unicode не я является внутренней или внешней командой, исполняемой программой или пакетным файлом»
    И ничего не создалось.

    А как долго он должен компилироваться? У меня уже 30 мин. прошло.

    Лев 03.05.2019 — 06:42

    Долгая компиляция

    Здравствуйте. У меня компиляция началась минут 40 назад, и все еще идет. Это нормально? И если нет, то что делать?

    Лев 03.05.2019 — 06:48

    И еще, Файлы в C:\Library\wxwidgets\lib\gcc_dll\ в монолитном режиме не совпадают названиями с вашим фото.

    Лев 03.05.2019 — 06:50

    И еще, Файлы в C:\Library\wxwidgets\lib\gcc_dll\ в монолитном режиме не совпадают названиями с вашим фото.

    Jenyay 05.05.2019 — 14:11

    Долгая компиляция библиотеки — это нормально.

    По поводу отличий имен файлов. Это возможно, поэтому что статью писал очень давно.

    Igor 29.07.2019 — 14:05

    пожалуйста дополните вашу статью

    если добавить -j12 или -j4
    пример: mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 UNICODE=1 USE_OPENGL=1 BUILD=release -j12

    »’
    число 12 соответствует количеству ядер в вашем процессоре.
    »’
    тогда создание библиотеки займет гораздо меньше времени.

    Алексей 19.06.2020 — 20:50

    Далеко устаревшая информация. Проще и намного понятнее ставить библиотеку по этой инструкции (Codeblocks 20.03 и wxWidgets 3.1.3): https://youtu.be/QfpIcU9uB_c
    У меня всё с первого раза получилось. И не используйте шаблон wxWidgets в Codeblocks, он устаревший, начинайте с чистого проекта.

    Дмитрий 11.04.2021 — 05:17

    Подробная пошаговая инструкция инсталляции wxwidgets 3.1.4+ code blocks 20.03+ gcc 10.2 (msys2)
    https://github.com/PBfordev/wxpbguide

    Поставил из исходников (zip-файл) wxWidgets 3.1.5 для CodeBlocks 20.03 (64-х битный) в Windows 10. Делал всё, как написано в статье, и получилось с 1-го раза. Спасибо за толковое описание!

    Петр 28.11.2021 — 12:07

    инструкция сработала, все прошло как по маслу, тест собрался. спасибо, а то боялся!

    IGOR 07.01.2022 — 15:19

    СОЗДАНИЕ wxWidget IN CodeBlocks

    IGOR 07.01.2022 — 15:23

    СОЗДАНИЕ wxWidget IN CodeBlocks

    спасибо,все получилось ! Только вопрос ,что с этим делать дальше ? Как это практически использовать ?

    Nutga 14.01.2022 — 08:37

    Какаой СМЫСЛ ЭТОГО?

    Какаой смысл собирать это например для WIN7?

    Проще использовать ГОТОВЫЕ VISUAL IDE

    Напишите кто считает что Не прав.

    Сергей 05.06.2022 — 20:01

    Какаой СМЫСЛ ЭТОГО?

    Попробуй влезть на железо со своим ГОТОВЫЕ VISUAL IDE в лучшем случае с 1гб озу на борту, а то и меньше.
    Вопрос кто прав, кто не прав отпадёт сразу же.
    И таких систем очень даже много ещё.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *