воскресенье, 1 мая 2011 г.

Настройка CodeBlocks для компиляции wxWidgets / Win32 приложений для Windows компилятором Mingw32 из под Linux/FreeBSD

Установка CodeBlocks из портов:

portinstall codeblocks


Запускаем CodeBlocks, далее меню "Settings" -> "Compiler and Debugger" -> "Selected compiler"
"GNU GCC Compiler" -> "Copy"
задаем имя компилятора "MinGW32 Compiler"

Для этого компилятора задаём:
в "#defines"

WINVER=0x0400
__WIN95__
__GNUWIN32__
STRICT
HAVE_W32API_H
__WXMSW__
__WINDOWS__

в "Toolchain executables" пропишем
"Compiler's installation directory" ~/mingw-cross-env/usr или что там у вас.








"C compiler:"i686-pc-mingw32-gcc
"C++ compiler:"i686-pc-mingw32-g++
"Linker for dynamic libs:"i686-pc-mingw32-g++
"Linker for static libs:" i686-pc-mingw32-ar
"Debugger:"i686-pc-mingw32-gdb
"Resorce compiler:"i686-pc-mingw32-windres
"Make program:"make

По поводу i686-pc-mingw32-gdb, надо создать скрипт ~/mingw-cross-env/usr/bin/i686-pc-mingw32-gdb

cd ~/mingw-cross-env
make gdb
touch ~/mingw-cross-env/usr/bin/i686-pc-mingw32-gdb
echo '#!/bin/csh' >> ~/mingw-cross-env/usr/bin/i686-pc-mingw32-gdb
echo 'wine ~/mingw-cross-env/usr/i686-pc-mingw32/bin/gdb.exe "$@"' >> ~/mingw-cross-env/usr/bin/i686-pc-mingw32-gdb
chmod +x ~/mingw-cross-env/usr/bin/i686-pc-mingw32-gdb



Да и ещё, некоторые общие настройки, хотя и без них wxWidgets приложение соберется, прописать в
"Other Linker Options":
-lstdc++
-lgcc
-lodbc32
-lwsock32
-lwinspool
-lwinmm
-lshell32
-lcomctl32
-lctl3d32
-lodbc32
-ladvapi32
-lodbc32
-lwsock32
-lopengl32
-lglu32
-lole32
-loleaut32
-luuid

Прописать в "Search directories"
Для Compiler путь к include: ~/mingw-cross-env/usr/i686-pc-mingw32/include
Для Linker путь к lib: ~/mingw-cross-env/usr/i686-pc-mingw32/lib
Для Resource compiler: ~/mingw-cross-env/usr/i686-pc-mingw32/include

Жмём "OK"

Из под su, делал так:
ln -s /usr/local/bin/wine /usr/local/bin/wine-auto

При создании нового проекта, надо выбирать "MinGW32 Compiler"
Для новых wxWidgets проектов надо прописывать:
В "Project build options" пропишем
в "Other options":

`i686-pc-mingw32-wx-config --cxxflags`


в "Other linker options:"

`i686-pc-mingw32-wx-config --libs`



Если использовать мастер для создания проекта, то надо wx-config заменить на i686-pc-mingw32-wx-config, для этого можно открыть Ваш файл проекта CodeBlocks (*.cbp) в обычном текстовом редакторе, например, gedit и произвести замену.

Имеются некоторые проблемы при запуске программ после сборки из CodeBlocks, но в общем можно запустить с отладчиком, правда CodeBlocks 10.05 может "рухнуть", было один раз.

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