?

Log in

No account? Create an account

Previous Entry | Next Entry

Сборка wx_trunk + wxcode

Так как я давно серьёзно не имею дел с wxWidgets, то сборочное окружение, в котором я собираю свои мелкие вспомогательные утилиты до недавнего времени находилось в состоянии "что собралось три года назад, с тем и линкую". А собирал я тогда, надо отметить, рассово-правильным способом, через .configure. Ага, под виндой, в msys... И, в общем-то, проблем особых не возникало с использованием (единственное, недавно нашёл баг в wxPlotCtrl - в апстрим-то я фикс отправил, а вот самому пересобирать было влом, пришлось костыль для его обхода подставлять), неудобства начинались когда надо было собрать софтины на другой машине... В общем, решил я наконец-таки обновить своё сборочное окружение, тем более, что есть повод попробовать кое-какие плюшки новых wx`ов. И всё было бы легко и просто, если бы я не использовал упомянутый выше wxPlotCtrl. Как выяснилось, собираться он (а точнее его составная часть - wxThings) хочет далеко не во всех конфигурациях: я пробовал варианты SHARED=1 MONOLITHIC=1, SHARED=0 MONOLITHIC=1 и SHARED=0 MONOLITHIC=0 - собралось только в последнем. Так вот, делаю шпаргалку по сборке:

Дефайним расположение библиотек и тулзов
set WXWIN=D:\WX_TRUNK
set WXCODE=D:\wxCode
set MINGW=C:\MinGW
set CMAKE=C:\Program Files\CMake
D:


Первая сборка
mkdir %WXWIN%
mkdir %WXCODE%
cd %WXWIN%
svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk .
cd %WXCODE%
svn checkout svn://svn.code.sf.net/p/wxcode/code/trunk/wxCode .

Не забыть поставить компилятор. GCC под винду бывает разный, я обычно использую стандартный MinGW и ставлю его по дефолтовому пути (C:\MinGW). А ещё желательно, что бы в path были доступны библиотеки libgcc_s_dw2-1.dll и libstdc++-6.dll.
Кроме того, надо поставить заголовки для GDI+ - качаем, например, отсюда и распаковываем lib и include в соответствующие подкаталоги MinGW. Подробнее можно почитать, например, тут.
Для сборки wxThings и wxPlotCtrl теперь нужен cmake, плюс, желательно, поставить doxygen. Я ставил и то и другое по дефолтовым путям. Есть небольшая проблемка - текущий cmake (3.0.2) ничего не знает про то, что dev-версия wx-ов сейчас имеет номер 31, по-этому надо обновить файл C:\Program Files\CMake\share\cmake-3.0\Modules\FindwxWidgets.cmake. Можно самостоятельно вписать недостающие циферки, а можно скачать работающую версию из поставки wxLua.

Обновление
cd %WXWIN%
svn update
cd %WXCODE%
svn update

Общая часть
set path=%MINGW%\bin;%MINGW%\mingw32\bin;%CMAKE%\bin
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=0 MONOLITHIC=0 BUILD=release USE_GDIPLUS=0 clean
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=0 MONOLITHIC=0 BUILD=release USE_GDIPLUS=0

cd %WXCODE%\components\wxthings
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=FALSE -DwxWidgets_ROOT_DIR=%WXWIN%
mingw32-make clean
mingw32-make
cd %WXCODE%\components\plotctrl
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=FALSE -DwxWidgets_ROOT_DIR=%WXWIN%
mingw32-make clean
mingw32-make

cd %WXCODE%\components\freechart\build
mingw32-make -f makefile.gcc WX_SHARED=0 WX_UNICODE=1 WX_DEBUG=0 WX_VERSION=31 WX_MONOLITHIC=0 clean
mingw32-make -f makefile.gcc WX_SHARED=0 WX_UNICODE=1 WX_DEBUG=0 WX_VERSION=31 WX_MONOLITHIC=0

Всё, должно работать. Проверить можно запустив пример из %WXCODE%\components\plotctrl\samples\plotctrl. Если при сборке ругается на GDI даже с флагом USE_GDIPLUS=0, значит уже был сгенерён конфиг с включенным GDI, надо его почистить.

UPDATE 23.11.2013: Обновил до соответствия современным реалиям, добавил сборку freechart
UPDATE 16.09.2014: Поправлено для корректной первоначальной сборки на чистой Win7 x32.
UPDATE 23.10.2014: Добавлена сборки wxThings/wxPlotCtrl через cmake.

Comments