|
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,813
|
||||||
Сборка из исходников wxWidgets под Windows, используя MinGW и makefile01.01.2024, 22:55. Показов 13782. Ответов 2
Метки нет (Все метки)
В данной статье приводится инструкция, как собрать из исходников wxWidgets, используя GNU Make на Windows.
0. Для сборки нужен MinGW, в частности mingw32-make. Если он у вас имеется, то переходим к следующему этапу. Если у вас сложности с установкой MinGW, то советую скачать архив со всем необходимым из сайта winlibs. Там рекомендую выбирать MinGW-w64 (UCRT) + GCC. Разархивируйте архив и укажите абсолютный путь к папке bin в Path. Для удобства добавляем переменную среды. Нажимаем Win+R и вводим команду SystemPropertiesAdvanced и далее нажимаем на Переменные окружения Далее, в переменных системы ищем переменную Path и нажимаем Изменить. Добавляем папку тулчейна. Например, в моем случае C:\msys64\ucrt64\bin.В указанной папке должен быть файл mingw32-make.exe. Если нет, то вы неправильно установили тулчейн. 1. Заходим на официальный сайт wxWidgets и нажимает на Downloads 2. Скачиваем архив с исходниками (zip или 7z) 3. Разархивируем скачанные файлы, например, в корень диска С. Например, после этих действий у вас должна быть папка C:\wxWidgets-3.2.44. Переходим в папку C:\wxWidgets-3.2.4\build\msw\. Перед глазами должны быть разные файлы, среди которых makefile.gcc. Если вы его видите, то вы в правильной папке.5. Кликаете на адресную строку в Проводнике, вводите команду cmd и нажимаете Enter. Открывается командная строка, где выбран уже C:\wxWidgets-3.2.4\build\msw>6. Далее, нужно прописать команду для сборки с помощью make Команда состоит из двух частей: Первая часть указывает на наш makefile: mingw32-make -f makefile.gccВо второй части идут опции, которые нужно передать в зависимости от того, что вам нужно BUILD=release (если вам нужна релизная сборка)или BUILD=debug (если нужна отладочная сборка)SHARED=1 (говорит о том, что нужно генерировать DLL файлы для динамической линковки)или SHARED=0 (выбрана по умолчанию, можно даже не прописывать. Означает, что нужна версия со статической линковкой)MONOLITHIC=1 (если нужно генерировать одну большую библиотеку вместо отдельных файлов)Опция MONOLITHIC 1 используются только с SHARED 1UNICODE=1 (выбрана по умолчанию, можно не прописывать. Означает, что нужно использовать юникод)или UNICODE=0 (использует ANSI)Примечание: при сборке с опциями SHARED=1 MONOLITHIC=1 рекомендую также прописатьCXXFLAGS=-fno-keep-inline-dllexportчтобы предотвратить нехватку оперативной памяти при сборке В итоге, если презюмировать, что не отключаем включенный по умолчанию юникод, то возможны такие варианты:
mingw32-make -f makefile.gcc SHARED=0 BUILD=releaseт.е. в командной строке выглядит так C:\wxWidgets-3.2.4\build\msw>mingw32-make -f makefile.gcc SHARED=0 BUILD=releaseДалее нажимаю Enter и сборка начинается. Процесс занимает много времени, которое зависит от вашего железа. В конце нужно убедиться, что сборка прошла без ошибок. *** Потом можно создать папку, например, wxWin куда скопировать из папки C:\wxWidgets-3.2.4 (папка с исходниками) две папки:C:\wxWidgets-3.2.4\includeC:\wxWidgets-3.2.4\lib\В итоге, получится wxWin\includewxWin\libСобственно, папку C:\wxWidgets-3.2.4\ можно потом удалить, если не планируете создать другие сборки.Дальше в ide указываются папки из wxWin.Например, если Code::Blocks, то в Settings/Global variables создается переменная wx.в base указывается абсолютный путь к wxWinв include указывается абсолютный путь к wxWin\includeв lib указывается абсолютный путь к wxWin\libДалее создаете проект wxWidgets При создании проекта, выбирайте wxWidgets 3.2, а также ставьте или уберите галочки, касающиеся юникода, типа созданной библиотеки и пр., чтобы оно соответствовало опциям, которые вы использовали при сборке. Дополнительно можно скачать wxFormBuilder, которая облегчит процесс создания форм, либо использовать плагин wxSmith из C::B.
4
|
||||||
| 01.01.2024, 22:55 | |
|
Ответы с готовыми решениями:
2
Makefile: сборка из исходников в поддиректории Сборка проекта под mingw в windows Сборка MySQL драйверов под Windows для mingw |
|
Just Do It!
|
||
| 20.01.2025, 09:00 | ||
|
Royal_X, всё прошло гладко - без сучка и запинки...
Не по теме:
удобство это изготовить одну кнопку в виде батника с path внутри и по ней клацать) спасибо за манула)
0
|
||
|
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,813
|
|||||||||||
| 10.01.2026, 12:16 [ТС] | |||||||||||
|
Update
Начиная с wxWidgets 2.9.1 при сборке даже релизной версии wxDEBUG_LEVEL выставлен на 1, что включает некоторые ассерты, хотя и не все (как это происходит при значении 2).Такое поведение, как по мне, не совсем корректное. Человек при сборке с флагом BUILD=release видит, что данный флаг также подключает NDEBUG и полагает, что его релизная библиотека будет без ассертов, но в итоге оказывается, что это не так. NDEBUG отключает только ассерты С++, но не wxWidgets. Далее, все программы, скомпилированные на релизной библиотеки будут иметь больше размера и содержать ненужный отладочный мусор, даже если при сборке передать NDEBUG. Этот мусор заметно увеличивает размер бинарника.Передача wxDEBUG_LEVEL=0 при сборке проектов может убрать эти отладочные данные из бинарников, но не полностью, поэтому предлагаю решить эту проблему еще при сборке самой библиотеки wxWidgets.Перед сборкой библиотеки, предлагаю отредактировать файл include/msw/setup.h. Там уже есть закомментированные строки
NDEBUG, типа если юзер выставил данный флаг, то чтобы wxDEBUG_LEVEL принял значение 0 и отладочные данные не включались, а мол если нет данного флага, то чтобы этих данных наоборот было больше обычного.Такая логика и вправду хороша, если вы собираете и релизную и отладочную версии wxWidgets. Однако, если вы собираете только релизную библиотеку и отладочная версия вам вообще не нужна, то предлагаю раскомментировать только строку
0
|
|||||||||||
| 10.01.2026, 12:16 | |
|
Помогаю со студенческими работами здесь
3
Как из исходников собрать exe в Windows с Mingw?
PHP 5.5 — сборка из исходников под nginx Сборка Box2D под MinGW Сборка Qt 4.8.5 под MinGW, неизвестная ошибка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|