кроссплатформенный C++ фреймворк wxWidgets

Ответить
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

https://github.com/wxWidgets/wxWidgets
wxWidgets - это свободный и открытый кроссплатформенный C++ фреймворк для написания продвинутых GUI-приложений с использованием нативных элементов управления.

wxWidgets позволяет писать нативные GUI-приложения для всех основных настольных платформ, а также помогает абстрагироваться от различий между ними в не-GUI аспектах. Он бесплатен для использования как в открытых, так и в коммерческих приложениях, поставляется с полным, удобным для чтения и модификации исходным кодом, обширной документацией и коллекцией из более чем сотни примеров. Вы можете узнать больше о wxWidgets на сайте https://www.wxwidgets.org/ и прочитать его документацию онлайн на сайте https://docs.wxwidgets.org/.

Эта версия wxWidgets поддерживает следующие основные платформы:

Windows 7, 8, 10 и 11 (32/64 бита).
Большинство вариантов Unix, использующих инструментарий GTK+ (версии 2.6 или новее или 3.x).
macOS (10.10 или новее) с использованием Cocoa на платформах amd64 и ARM.
Поддерживаются все компиляторы C++11, включая, но не ограничиваясь ими:

Microsoft Visual C++ 2015 или более поздней версии (до 2022 года).
g++ 4.8 или более поздние версии (до 13), включая MinGW/MinGW-64/TDM под Windows.
Clang (до 16).
Пожалуйста, используйте ветку 3.2, если вы должны использовать wxWidgets с компилятором C++98 или поддерживаете Windows XP.


Репозиторий:
https://docs.codelite.org/wxWidgets/repo320/#ubuntu-and-debian
https://www.wxwidgets.org/downloads/
https://www.wxwidgets.org/docs/book/errata/
https://github.com/PBfordev/wxpbguide

примеры:
http://www.anthemion.co.uk/wxWidgetsBook/wxbookexamples.zip
wxpbguide-master.zip
Примеры
(1.86 МБ) 2296 скачиваний
wxpbguide-master.zip
Примеры
(1.86 МБ) 2296 скачиваний
учебник
https://www.wxwidgets.org/docs/book/
Cross-Platform GUI Programming with wxWidgets.pdf
Учебние
(6.8 МБ) 2271 скачивание
Cross-Platform GUI Programming with wxWidgets.pdf
Учебние
(6.8 МБ) 2271 скачивание
Видео-инструкция
https://www.youtube.com/playlist?list=PL50rxxMeknmHbhv2suS0xaGkV8JvPNoaM
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Конфигурирование wxWidgets в среде Code::Blocks 2021
https://www.youtube.com/watch?v=5HbkHohztQw

Ссылки:
GCC~ https://jmeubank.github.io/tdm-gcc/
Code::Blocks~ https://www.codeblocks.org/
wxWidgets~ https://www.wxwidgets.org/

переходим в распакованную ~/wxWidgets-3.2.4/build/msw\
и собираем с коммандной строки wxWidgets для дебагинга

Код: Выделить всё

mingw32-make -f makefile.gcc SHARED=0 BUILD=debug MONOLITHIC=1
Собираем из коммандной строки для релиза

Код: Выделить всё

mingw32-make -f makefile.gcc SHARED=0 BUILD=release MONOLITHIC=1
Релиз wxWidgets
https://github.com/wxWidgets/wxWidgets/releases

Учебник Code::Blocks
https://wiki.codeblocks.org/index.php/WxSmith_tutorials

Репозиторий, русифицированный Code::Blocks
https://github.com/tsnsoft/CodeBlocks_rus

Репозиторий codeblocks
https://sourceforge.net/projects/codeblocks/files/Binaries/Nightlies/Prerequisites/
https://sourceforge.net/projects/codeblocks/files/Binaries/Nightlies/2020/

Репозиторий cmake
https://cmake.org/download/

Учебник visual studio code
https://wxwiki.yonote.ru/share/13dca086-9700-4682-8443-0e6e57836b35/doc/wxwidgets-c-cmake-i-visual-studio-code-8xDuBpNG94



Использование готовых бинарных файлов wxWidgets в CodeBlocks
https://wiki.wxwidgets.org/Using_wxWidgets_Pre-Built_Binary_in_CodeBlocks

На момент написания этого руководства бинарные релизы доступны только для Visual C++ и TDM-GCC. Я делаю это на Code:Blocks 16.01 с TDM-GCC v4.9.2.

Перейдите на страницу загрузок wxWidgets.
Найдите раздел Binaries того релиза, который вы хотите использовать, и щелкните на wxMSW DLLs
Загрузите следующее.
Vvv - это версия wxWidgets, которую вы хотите использовать, например, в моем случае это будет 3.0.3
XXX - версия компилятора, который вы используете, например, в моем случае это будет 492TDM
wxWidgets-Vvv_Headers.7z
wxMSW-Vvv_gccXXX_Dev.7z
wxMSW-Vvv_gccXXX_ReleaseDLL.7z (необязательно)
Распакуйте все 3 файла в папку. Я использую C:\wxWidgets_include\

Папка для извлечения файлов библиотеки
Содержимое каждой папки
Папка .\include содержит заголовочные файлы для разработки.
Папка .\lib\gcc492TDM_dll_Dev содержит двоичные файлы библиотек как для разработки, так и для распространения.
Папка .\lib\gcc492TDM_dll_Release содержит DLL только для распространения. Она не очень нужна, так как ее содержимое уже доступно в папке с двоичными библиотеками для разработки.

Предварительно скомпилированная DLL необходима для запуска исполняемого файла
Для запуска полученной программы потребуются предварительно скомпилированные DLL-библиотеки. Скопируйте необходимые файлы из папки .\lib\gcc492TDM_dll_Release в папку вашего исполняемого файла. Те же файлы можно найти и в папке .\lib\gcc492TDM_dll_Dev, но это может быть немного беспорядочно.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

перекомпиляция виджета:
https://wiki.wxwidgets.org/CodeBlocks_Setup_Guide

В дальнейших инструкциях я буду называть каталог wxWidgets %WXWIN%, вы должны изменить его на свой собственный каталог. (например, "c:\wxWidgets-x.x").

Создание собственной библиотеки wxWidgets
Прежде всего, добавьте каталог bin программы MinGW, находящийся в каталоге установки CodeBlocks, в переменную %PATH% (Windows, Mac). Теперь пришло время скомпилировать wxWidgets, откройте командную строку и перейдите в каталог wxWidgets:

Код: Выделить всё

cd %WXWIN%\build\msw
Теперь мы находимся в нужном месте и сначала очистим источник:

Код: Выделить всё

 mingw32-make.exe -f makefile.gcc clean 
если после очистки у вас все еще возникают проблемы с компиляцией, возможно, вы захотите удалить каталог в каталоге build\msw. (она содержит объектные файлы...) Когда все очищено, мы можем скомпилировать wxWidgets:

Сначала нам нужно настроить сборку. Если ваш makefile.gcc (в моей версии на 7-ой строке) включает config.gcc, то параметры командной строки будут переопределены config-файлом. Поэтому отредактируйте настройки компилятора в config.gcc, чтобы они соответствовали вашему выбору. Рекомендуется использовать следующие параметры: USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0

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

Код: Выделить всё

mingw32-make.exe -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0
Если вы что-то напутали и хотите почистить, вам нужно передать те же параметры, чтобы сделать clean.
Пример для командной строки clean:

Код: Выделить всё

 mingw32-make.exe -f makefile.gcc clean USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0
Итак, теперь все скомпилировано для использования кодовых блоков.

Копирование библиотек
После завершения компиляции полезно скопировать библиотеки в другую директорию. Это позволит вам сделать несколько сборок (например, отладочную и релизную).

Поэтому сначала мы создадим каталог, который можно расположить в %WXWIN%\lib.
Затем переходим в каталог %WXWIN%\lib\gcc_dll (может называться по-другому, если вы изменили опции сборки).
Переименуйте каталог %WXWIN%\lib\gcc_dll в каталог по вашему выбору. (Для меня это %WXWIN%\lib\gcc_dllNonUnicode)
ПРИМЕЧАНИЕ: Убедитесь, что все удалено из каталога %WXWIN%\lib\gcc_dll, иначе могут возникнуть проблемы при компиляции другой версии.

Настройка Code::Blocks
Параметры компилятора/линкера
Далее необходимо настроить Code::Blocks на использование аргументов компилятора и компоновщика wx-config. Самый простой способ сделать это - создать новые флаги компилятора, которые в дальнейшем можно будет включать или выключать по мере необходимости.

Создание флага компилятора wxWidgets

Перейдите в меню Проект --> Параметры сборки
В разделе Флаги компилятора --> Общие щелкните правой кнопкой мыши на элементе и выберите "Новый флаг..." из контекстного меню.
В поле "Имя" введите что-то вроде "wxWidgets -- Compiler Suggested Settings".
В поле "Флаги компилятора" введите
`wx-config --cxxflags`.
Нажмите OK

Создание флага компоновщика wxWidgets

В разделе Флаги компилятора --> Общие щелкните правой кнопкой мыши на элементе и выберите "Новый флаг..." из контекстного меню.
В поле "Имя" введите что-то вроде "wxWidgets -- Linker Suggested Settings".
В поле "Флаги компоновщика" введите
`wx-config --libs`.
Нажмите OK
Теперь, когда вы настроили флаги компилятора/линковщика, не забудьте включить их в разделе Project --> Build Options --> YourProjectName для проектов wxWidgets, которые вы хотите собрать.

Поздравляем! Вы можете начать разработку в wxWidgets. Если возникнут какие-либо проблемы, просто спросите на форуме Code::Blocks (http://forums.codeblocks.org/).
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

vcpkg

Сообщение ya »

https://docs.wxwidgets.org/3.1.7/plat_msw_install.html
https://github.com/Microsoft/vcpkg

Код: Выделить всё

Using vcpkg
You can download and install wxWidgets using the vcpkg dependency manager:

> git clone https://github.com/Microsoft/vcpkg.git
> cd vcpkg
> bootstrap-vcpkg.bat
> vcpkg integrate install
> vcpkg install wxwidgets
> vcpkg install wxwidgets:x64-windows
Vcpkg поможет вам управлять библиотеками C и C++ в Windows, Linux и MacOS. Этот инструмент и экосистема постоянно развиваются, и мы всегда благодарны за вклад!
Если вы никогда раньше не использовали vcpkg или пытаетесь понять, как им пользоваться, ознакомьтесь с нашим разделом "Начало работы", чтобы узнать, как начать использовать vcpkg.
Для получения краткого описания доступных команд, после установки vcpkg, вы можете запустить vcpkg help или vcpkg help [command] для получения справки по конкретной команде.

https://github.com/microsoft/vcpkg-tool

основной репозиторий https://github.com/microsoft/vcpkg для обсуждения всех возможностей, отслеживания проблем и редактирования доступных библиотек.

Vcpkg-tool: Обзор
Этот репозиторий содержит содержимое, ранее находившееся на https://github.com/microsoft/vcpkg в дереве "toolsrc", и поддержку сборки.

vcpkg-artifacts
vcpkg-artifacts в настоящее время находится в стадии "предварительного просмотра" - наверняка будут внесены изменения, основанные на отзывах.

Вы можете использовать его, но будьте предупреждены, что мы можем изменить форматы, команды и т.д.

Думайте о нем как о конфигурации желаемого состояния для проектов на C/C++, управляемой манифестом.

Он интегрируется в вашу оболочку (PowerShell, CMD, bash/zsh)
может восстанавливать артефакты в соответствии с манифестом, который следует за кодом
предоставляет интерфейсы для обнаружения.
Установка
Хотя использование vcpkg-artifacts одинаково на всех платформах, установка/загрузка/удаление немного отличается в зависимости от используемой платформы.

vcpkg-artifacts не сохраняют никаких изменений в окружении и не добавляют себя автоматически в среду запуска. Если вы хотите, чтобы он загружался в окне, вы можете просто выполнить скрипт. Если добавить его в профиль вручную, он будет загружаться в каждом новом окне.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Код: Выделить всё

g++ -std=c++17 -Wall -Wextra -g   -c -o src/main.o src/main.cpp
настроить IDE на вызов компилятора с правильными параметрами. Правильные опции для проектов wxWidgets должны включать вывод `wx-config --cxxflags` для компилятора C++ и `wx-config --libs` для компоновщика.

Не прописывайте пути в опциях проекта, использование wx-config проще и переносимее.

Кроме того, вам нужно будет указать компоновщику на используемые библиотеки с помощью опции -L и использовать -l (строчная буква L) с каждой библиотекой, которая вам понадобится.
Пример:

-L/usr/local/lib -lwxcore-3.1 -lwxbase-3.1

Проверьте имена библиотек и используйте их без префикса lib.
А еще лучше - попробуйте запустить wx-config --libs и использовать полученный результат для опций компоновщика в вашей IDE.
Также для получения полного набора опций компилятора используйте вывод wx-config --cxxflags
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Добавьте папку для конкретной сборки (например, $(WXWIN)\lib\gcc_lib\mswud для статической сборки Unicode Debug) в include и посмотрите, поможет ли это. Также, если вы хотите использовать возможности C++11 и если вы не используете довольно свежую версию wxWidgets trunk, вам может потребоваться скомпилировать обе библиотеки с опцией CXXFLAGS="-std=gnu++11" вместо -std=c++11.

В меню выберите Проект -> Параметры сборки

Нажмите на "Search directories".

В дереве слева щелкните на имени проекта (не отладочного или релизного).
Путь должен указывать на общую директорию wxWidgets include, в вашем случае, вероятно:
C:\Users\Gabrielius\Documents\C++\wxwidgets\include

Теперь нажмите на "debug". Введенный там путь зависит от используемого компилятора и конфигурации. В вашем случае это может быть:
C:\Users\Gabrielius\Documents\C++\wxwidgets\lib\gcc_lib\mswud

Для конфигурации "релиз":
C:\Users\Gabrielius\Documents\C++\wxwidgets\lib\gcc_lib\mswu
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Бинарный релиз кодблока
https://www.codeblocks.org/downloads/binaries/

Как устанавливать и подключать библиотеки в кодблокс
https://www.youtube.com/watch?v=RdMvCCL4BKQ
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

хотите собрать минимальный образец wxWidgets, вам нужно сделать несколько дополнительных шагов.
Сначала установите флажок "Создать пустой проект" (обычно вы этого не делаете).
По окончании работы мастера скопируйте файл кода "minimal.cpp" из папки "<WXROOT>/samples/minimal/" в папку проекта, созданную мастером.
Скопируйте файл ресурсов "sample.rc" и иконку "sample.ico" из папки "<WXROOT>/samples/" также в папку проекта.
Далее в меню codeblocks выберите "Project->Add files" и выберите код и файл ресурсов, которые вы только что перенесли.
Теперь проект должен нормально собираться и запускаться.

https://forums.wxwidgets.org/viewtopic.php?t=46777

https://docs.wxwidgets.org/3.2.1/plat_msw_binaries.html

https://www.wxwidgets.org/downloads/

https://github.com/mingw-w64/mingw-w64.github.io

https://github.com/huckor/wxwidgets-vscode/releases/tag/wx_3.1.4_v2

https://github.com/huckor/wxwidgets-vscode

https://github.com/tsnsoft/wxwidgets_demo

https://github.com/tsnsoft/CodeBlocks_rus

https://sourceforge.net/projects/codeblocks/files/Binaries/Nightlies/Prerequisites/

https://www.youtube.com/watch?v=51-IaqA-5RQ

https://devcodef1.com/news/1022084/install-wxwidgets-on-windows-10-and-use-it-in-code-blocks-and-visual-studio-2019-community

wxwidgets_demo-master.zip
Шаблон настроек графического интерфейса
(3.85 МБ) 2294 скачивания
wxwidgets_demo-master.zip
Шаблон настроек графического интерфейса
(3.85 МБ) 2294 скачивания
Последний раз редактировалось ya 29 мар 2024, 23:40, всего редактировалось 1 раз.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

#include "wx/setup.h"

Сообщение ya »

#include "wx/setup.h"
https://stackoverflow.com/questions/30462649/wxwidgets-missing-wx-setup-h
Когда вы компилируете свои файлы, чтобы включить библиотеки wxWidgets, добавьте это в конец команды gcc:

Код: Выделить всё

`wx-config --cxxflags` `wx-config --libs`
нужно скопировать файл setup.h из каталога ./wxWidgets/include/wx/msw/wx/setup.h в каталог ./wxWidgets/include/wx.
Таким образом, ваш исходный код может использовать этот файл как #include <wx/setup.h
Этот setup.h включает в себя все внутренние элементы управления пользовательским интерфейсом wxwidgets.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

libwxmsw31u.a libwxpng.a libwxjpeg.a libwxtiff.a libwxzlib.a

Сообщение ya »

Подключаемые библиотеки
libwxmsw31u.a libwxpng.a libwxjpeg.a libwxtiff.a libwxzlib.a
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Загрузка wxWidgets

Первым делом необходимо скачать wxWidgets с официального сайта. Зайдите на сайт https://www.wxwidgets.org/downloads/ и выберите стабильную версию, подходящую для вашей системы. Для Windows выберите пакет "Windows ZIP".


Создание wxWidgets

Прежде чем использовать wxWidgets, его нужно собрать. Откройте Командную строку, нажав Win + R и набрав cmd. Перейдите в место, откуда вы извлекли wxWidgets, с помощью команды cd. Например, введите cd C:\wxWidgets\build\msw.

Далее выполните следующую команду для настройки сборки:

Код: Выделить всё

mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1
Эта команда настраивает сборку для релизной версии без общих библиотек и с поддержкой Юникода. Это может занять некоторое время в зависимости от спецификаций вашей системы.

После завершения настройки выполните следующую команду, чтобы запустить сборку:

Код: Выделить всё

mingw32-make -f makefile.gcc
Эта команда скомпилирует библиотеки wxWidgets и создаст необходимые файлы.


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

Если вы используете Code::Blocks в качестве IDE, выполните следующие шаги для установки wxWidgets:

Откройте Code::Blocks и перейдите в раздел Настройки > Компилятор.
Выберите вкладку Глобальные настройки компилятора и нажмите на кнопку Новый.
Задайте имя нового компилятора, например "wxWidgets".
В поле Исполняемый файл компилятора найдите и выберите файл mingw32-g++.exe, расположенный в папке bin вашей установки MinGW.
В поле Флаги компилятора добавьте следующие флаги:
-I C:\wxWidgets\include -D__GNUWIN32__ -D__WXMSW__.
На вкладке Настройки компоновщика добавьте следующие библиотеки в поле Библиотеки компоновщика:
C:\wxWidgets\lib\gcc_dll\libwxmsw31u.a
Нажмите OK, чтобы сохранить настройки.


Настройка Visual Studio 2019 Community

Если вы предпочитаете использовать Visual Studio 2019 Community, выполните следующие шаги для установки wxWidgets:

Откройте Visual Studio и создайте новый проект.
Перейдите в меню Проект > Свойства.
В раскрывающемся меню Конфигурация выберите Все конфигурации.
Перейдите в раздел C/C++ > General и добавьте следующий путь в поле Additional Include Directories (Дополнительные каталоги включения):
C:\wxWidgets\include
Перейдите в Linker > General и добавьте следующий путь в поле Additional Library Directories (Дополнительные библиотечные справочники):
C:\wxWidgets\lib\vc_x64_lib
Перейдите в Linker > Input и добавьте следующие библиотеки в поле Additional Dependencies (Дополнительные зависимости):
wxmsw31u.lib;wxmsw31u_core.lib;wxbase31u.lib;winmm.lib;comctl32.lib;rpcrt4.lib
Нажмите OK, чтобы сохранить настройки.
Поздравляем! Вы успешно установили wxWidgets на Windows 10 и интегрировали его в Code::Blocks и Visual Studio 2019 Community. Теперь вы можете приступить к разработке кроссплатформенных настольных приложений с использованием wxWidgets.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: кроссплатформенный C++ фреймворк wxWidgets

Сообщение ya »

Для подключения wxWidgets в Code::Blocks на Windows 7, вам необходимо выполнить следующие шаги:

Скачайте и установите wxWidgets с официального сайта: https://www.wxwidgets.org/downloads/. Выберите версию, соответствующую вашей архитектуре (32-битная или 64-битная) и загрузите установщик.

Установите wxWidgets в папку на вашем компьютере, например, C:\wxWidgets.

Откройте Code::Blocks и создайте новый проект.

Нажмите на меню "Project" -> "Build options" -> "Linker settings".

Нажмите на кнопку "Add" и добавьте следующие библиотеки из папки установки wxWidgets:

wxmsw31u_core
wxbase31u
wxtiff
wxjpeg
wxpng
wxzlib
wxexpat
comctl32
rpcrt4
winmm
shell32
Перейдите во вкладку "Search directories" и добавьте путь к папке wxWidgets, где находятся заголовочные файлы (например, C:\wxWidgets\include).

Нажмите "OK" и скомпилируйте и запустите ваш проект.

-------------------------------------------------------------------------------------------------------

Для линковки wxWidgets в Code::Blocks необходимо выполнить следующие шаги:

Скачайте и установите wxWidgets на ваш компьютер. Вы можете скачать исходники с официального сайта (https://www.wxwidgets.org/) и скомпилировать их самостоятельно или установить предкомпилированные библиотеки.

Создайте новый проект в Code::Blocks или откройте существующий проект.

Настройте проект для использования wxWidgets. Для этого откройте "Project -> Build Options", затем перейдите на вкладку "Linker settings". Добавьте следующие библиотеки к списку линковки:

wxbase31u
wxmsw31u_core
wxmsw31u_adv
wxmsw31u_html
Перейдите на вкладку "Search directories" и добавьте путь к папке include wxWidgets в разделе "Compiler".

Добавьте флаги компиляции для использования wxWidgets. Для этого перейдите на вкладку "Compiler Settings" и добавьте следующие флаги компиляции:

Опция "-D__WXMSW__" для указания, что вы используете wxWidgets под Windows.
Опция "-DwxUSE_GUI=1" для использования GUI-компонентов wxWidgets.
Опция "-I{путь_к_папке_исходников_wxWidgets}" для добавления пути к исходникам wxWidgets.
После выполнения всех этих шагов, вы сможете успешно линковать и компилировать ваши проекты, использующие wxWidgets в Code::Blocks.
Ответить