Нарушитель
Эксперт функциональных языков программированияЭксперт С++
4573 / 2481 / 991
Регистрация: 01.06.2021
Сообщений: 8,496

Сборка из исходников wxWidgets под Windows, используя MinGW и makefile

01.01.2024, 22:55. Показов 11443. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В данной статье приводится инструкция, как собрать из исходников 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.4

4. Переходим в папку 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 1

UNICODE=1 (выбрана по умолчанию, можно не прописывать. Означает, что нужно использовать юникод)
или
UNICODE=0 (использует ANSI)

Примечание: при сборке с опциями SHARED=1 MONOLITHIC=1 рекомендую также прописать
CXXFLAGS=-fno-keep-inline-dllexport
чтобы предотвратить нехватку оперативной памяти при сборке

В итоге, если презюмировать, что не отключаем включенный по умолчанию юникод, то возможны такие варианты:
Code
1
2
3
4
5
6
SHARED=0 BUILD=debug
SHARED=0 BUILD=release
SHARED=1 BUILD=debug
SHARED=1 BUILD=release
SHARED=1 MONOLITHIC=1 BUILD=debug
SHARED=1 MONOLITHIC=1 BUILD=release
Т.к. я предпочитаю всегда статическую линковку и мне достаточно релизной сборки, то я прописываю:

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\include
C:\wxWidgets-3.2.4\lib\

В итоге, получится
wxWin\include
wxWin\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.
2
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2024, 22:55
Ответы с готовыми решениями:

Makefile: сборка из исходников в поддиректории
Здравствуйте, никак не могу разобраться, как прописать правило для сборки из исходников в поддиректории. Пытаюсь запустить простой...

Сборка проекта под mingw в windows
Всегда использовал студию и собирал из под ее командной строки. прописывал qtenv.bat, qmake, nmake. Но тут понадобилась чистая...

Сборка MySQL драйверов под Windows для mingw
При выполнении C:\Qt\Qt5.1.0\5.1.0-beta1\Src\qtbase\configure.exe Выдает ошибку: Error: Creating a shadow build of Qt requires ...

1
Just Do It!
 Аватар для XLAT
4166 / 2597 / 650
Регистрация: 23.09.2014
Сообщений: 8,322
Записей в блоге: 2
20.01.2025, 09:00
Royal_X, всё прошло гладко - без сучка и запинки...

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
Для удобства добавляем переменную среды.
нет тут никакого удобства в моем случае - у меня зоопарк компиляторов.
удобство это изготовить одну кнопку в виде батника с path внутри и по ней клацать)



спасибо за манула)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2025, 09:00
Помогаю со студенческими работами здесь

Как из исходников собрать exe в Windows с Mingw?
Пробовал с mingw491_32. Вот эту программу Sip-4.17 https://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.zip/download ...

QElectroTech сборка из исходников под виндоус
Всем привет) вопрос кто нибудь собирал QElectroTech под виндоус?Скачала исходники, выдает только одну ошибку.. No rule to make target...

PHP 5.5 — сборка из исходников под nginx
Доброго времени суток! Вопрос следующий - как правильно собрать PHP5 из исходников под nginx (php-fpm), без использования абсолютных...

Сборка Box2D под MinGW
Как собрать из исходников файл Box2D.dll под MinGW, чтобы можно было в свои проекты подключать?

Сборка Qt 4.8.5 под MinGW, неизвестная ошибка
Собираю под Windows 7 qt-everywhere-opensource-src-4.8.5, скачал с архива на downloads.qt.io, во время исполнения confiigure: set...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru