Как стать автором
Обновить

Комментарии 24

За это время пока все настроишь и соберешь можно уже на Qt5 программу успеть написать.
Ну не скажите) Qt конечно инструмент хороший, но соответственно и хорошо стоит.
В смысле хорошо стоит? Это же свободное ПО.
было. Или опять свободное? Или я чего то не знаю?..
Лицензия GNU LGPL или GNU GPL, коммерческая

а, нет. Ну ведать смотря в каких целях использовать…
Свободное-свободное. LGPL подпадает под определение open source.
open source — это еще не означает что свободное (открытое <> свободное), вы же прекрасно понимаете. И прямо не означает что проприетарное ПО возможно использовать в коммерческих целях.
Open-source software (OSS) is computer software with its source code made available and licensed with a license in which the copyright holder provides the rights to study, change and distribute the software to anyone and for any purpose.

Qt лицензирован GNU LGPL 2.1, которая is a free software license.
Ну может быть, я в лицензиях не особо разбираюсь, их такая градация, что запутаться можно.
В целом Qt конечно мощный инструмент, но и wx я бы поставил на ровне с ним.
Где у нас можно wxandroid найти? А wxios?
ну это да.
Свободный, если распространять исходники вместе с бинарником.
Автор, круто бы описать основные отличия функционала wx от тех же Qt/GTK/Tk.
Можно и проприетарные приложения писать если не требуется статическая линковка, и то можно даже со статической если объектные файлы оставить. Этого мало?
Я считаю, что в эту статью нужно добавить больше объяснений.

Тут какой-то рецепт, который может быстро устареть или вообще не сработать в других условиях.
Вы ошибаетесь, наоборот, представлен именно универсальный рецепт сборки и настройки wxWidgets под Windows.
Что бы Вы убедились, постараюсь подытожить:

1) Условимся, что у нас установлена обновленноя ОС Windows;
2) Скачиваем компилятор TDM-GCC последней версии с официального сайта;
3) Устанавливаем этот самый компилятор, и прописываем в переменную Path путь к бинарникам компилятора: C:\TDM-GCC-32\bin;
4) Скачиваем и распаковываем последнюю стабильную версию wxWidgets;
5) Прописываем глобальную системную переменную WXWIN и присваиваем ей значение пути к корневому каталогу библиотеки: C:\wxWidgets-3.0.0;
6) Выполняем сборку этой самой библиотеке, выполняя следующие действия по порядку (дожидаясь завершения каждого), а именно, запускаем командную строку, и выполняем:
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc clean
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
7) Настраиваем необходимый нам IDE соответствующим образом.


Не пойму куда еще универсальнее?

Тут какой-то рецепт, который может быстро устареть или вообще не сработать в других условиях.

Поясните пожалуйста. Тут или я чего то не понял, или вы с общим процессом сборки незнакомы.
Или под универсальным способом вы имели введу установку из репозитория?
и то пункты 1-3 отпадают если у нас уже все установлено.
в случае ошибки, обращаемся к FAQ.
3. Обновленная windows не даст вам писать в корень диска C: без запроса UAC.
2,3. Что за TDM-GCC с официального сайта. Раньше официальным был mingw.org. Но он выродился, и сейчас лучшие сборки выпускает mingw builds. Причем сборок там довольно много, и так много их неспроста (подсказка — я не буду менять свой компилятор только для того, чтобы он соответствовал вашей инструкции, потому что я его тоже не просто так выбрал). Тут мы молчим, что есть еще вариант MSVC.
5. Прописывать глобальные системные переменные вообще — плохо. Да и почему я ее должен кому-то прописывать, а не создать bat-file с окружением, как это делает, например, msys shell? Я бы сказал, что прописывание глобальных системных переменных сродни make install в linux. Отличный способ все сломать! Зачем учить людей плохому?
6. Надо подробнее описать, на что влияют данные настройки. Например, стоит разъяснить ситуацию со статической линковкой и лицензиями.
7. IDE для С++ существует не одна. Люди могут пользоваться Netbeans, Eclipse, Qt Creator, Sublime text. Потому нужно объяснять не как настроить в конкретной IDE, а какие библиотеки и заголовки подключать и для чего. У вас же сплошная магия.

И магия так и продолжается до самого конца: вы приводите какие-то тексты ошибок и предполагаемые решения, но я уверен, что у ошибок может быть несколько причин и несколько путей устранения. Если вы приводите faq, то надо объяснять, что за ошибку вы описываете, ее источник — и почему она так решается. Да, где-то вы это сделали — но не во всех случаях.

А последний вопрос faq, вы, видимо, и сами не понимаете. «CXXFLAGS=»-fno-keep-inline-dllexport"" может перестать работать в любой момент просто потому что разработчики поменяют код. Правильным решением было бы, навреное, производить в таком случае кросскомпиляцию с win64 хост на win32 target.

Вы уверены, что LAA работает так, как вы думаете?
--large-address-aware
If given, the appropriate bit in the «Characteristics» field of the
COFF header is set to indicate that this executable supports vir-
tual addresses greater than 2 gigabytes. This should be used in
conjunction with the /3GB or /USERVA=value megabytes switch in the
"[operating systems]" section of the BOOT.INI. Otherwise, this bit
has no effect. [This option is specific to PE targeted ports of
the linker]

Написано, что это разрешает использовать 3GB вашему приложению, но не линковщику самому (которому памяти не хватает).
замечания принял, но:

3. Обновленная windows не даст вам писать в корень диска C: без запроса UAC.

Писать в корень не обязательно, сами понимаете можно задать любой путь расположения библиотеки. Я лишь рекомендовал оставлять пути по умолчанию, т.е. те пути по которым библиотека или приложение, само «просится».
2,3. Что за TDM-GCC с официального сайта. Раньше официальным был mingw.org.

TDM-GCC это альфа сборка новых релизов gcc собранных для mingw
A compiler suite for 32- and 64-bit Windows based on the GNU toolchain

TDM-GCC is a compiler suite for Windows.
It combines the most recent stable release of the GCC toolset, a few patches for Windows-friendliness, and the free and open-source MinGW or MinGW-w64 runtime APIs to create an open-source alternative to Microsoft's compiler and platform SDK.
It can create 32-bit OR 64-bit binaries, for any version of Windows since Windows 98.
It has an easy-to-use single-file installer that creates a working installation with just a few clicks, and can update that installation when new packages become available.
It consists of command-line tools only. If you want a visual IDE (text editor, compiler interface, visual debugger), Code::Blocks integrates well with TDM-GCC.
TDM-GCC is a redistribution of components that are freely available elsewhere; as such, support for using TDM-GCC should generally be sought on the basis of the individual components in their respective forums. See the documentation for more details.

Сам при сборке wx с помощью MinGW, от версии к версии получал ошибки. При использовании TDM-GCC, аналогичных ошибок не возникало.
5. Прописывать глобальные системные переменные вообще — плохо. Да и почему я ее должен кому-то прописывать, а не создать bat-file с окружением, как это делает, например, msys shell? Я бы сказал, что прописывание глобальных системных переменных сродни make install в linux. Отличный способ все сломать! Зачем учить людей плохому?

Возможно вы правы, но я делаю именно так. Прежде всего это удобно с точки зрения использования коротких имен переменных, вместо длинных путей к библиотекам.
6. Надо подробнее описать, на что влияют данные настройки. Например, стоит разъяснить ситуацию со статической линковкой и лицензиями.

7. IDE для С++ существует не одна. Люди могут пользоваться Netbeans, Eclipse, Qt Creator, Sublime text. Потому нужно объяснять не как настроить в конкретной IDE, а какие библиотеки и заголовки подключать и для чего. У вас же сплошная магия.

Согласен, Вы правы.

FAQ нарыт в просторах Интернета, был размешен в качестве справочной информации в случае возникновения аналогичных ошибок.

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

Возможно пост стоило сделать компактнее.
Тут какой-то рецепт, который может быстро устареть или вообще не сработать в других условиях.

Кстати в XP — также все прекрасно собирается, потому же самому рецепту.
Добавлю свой рецепт.

1) Качаем Code::Blocks с интегрированным MinGW (TDM-GCC).
2) Устанавливаем.
3) Добавляем в переменную Path путь к бинарникам компилятора.
;c:\Programs\CodeBlocks\MinGW\bin\
4) Скачиваем и распаковываем последнюю стабильную версию wxWidgets;
5) Прописываем глобальную системную переменную WXWIN и присваиваем ей значение пути к корневому каталогу библиотеки.
c:\Programs\wxWidgets-3.0.2\
6) В файле %WXWIN%\build\msw\config.gcc устанавливаем флаг для C++11:
CXXFLAGS="-std=gnu++11"
7) Запускаем cmd
8) Если в path прописаны пути к другим версиям GCC (WinAVR, ARM), временно устанавливаем:
set path=c:\Programs\CodeBlocks\MinGW\bin;C:\Windows\system32;C:\Windows
9) Выполняем сборку библиотеки:
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc clean
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0

10) Для GUI-приложений включать поддержку jpeg и tiff обязательно.
10) Для GUI-приложений включать поддержку jpeg и tiff обязательно.

это, да!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации