1. 安装某个驱动器的根目录下,比如:D:\ wxWidgets-2.9.4 目录
2. 编译
D:\wxWidgets-2.9.4\build\msw\makefile.gcc中
文件开头加上SHELL=cmd.exe
============================================================
加上SHELL=cmd.exe原因:
编译wxWidgets是一件挺简单的事情,但是最近在编译的时候遇到一些问题。
错误信息类似于如下的结果:
if not exist ../../lib/gcc_lib/mswud/wx mkdir ../../lib/gcc_lib/mswud/wx
process_begin: CreateProcess(NULL, -c "if not exist ../../lib/gcc_lib/mswud/wx mkdir ../../lib/gcc_lib/mswud/wx", ...) failed.
make (e=2)
产生错误的原因是因为安装了MSYS后,利用Make命令会首先执行MSYS中的SHELL命令,从而会导致编译错误,对于这种情况,修改makefile.gcc文件,使其默认采用CMD命令行。
makefile.gcc修改前: SHELL := $(COMSPEC)
静态链接(调试版)============================================================
D:\wxWidgets-2.9.4\build\msw\config.gcc
SHARED ?= 0
UNICODE ?= 1
BUILD ?= debug
SHARED 为 0表示要编译的是静态库,而不是动态库(共享库); UNICODE为1,表示要编译成UNICODE版本,这一项在本次编译过程中始终为1。 BUILD为debug,表示要编译成含有调试信息的版本。
cmd:
D:
cd wxWidgets-2.9.4\build\msw
mingw32-make.exe -f makefile.gcc
或者
cmd:
D:
cd wxWidgets-2.9.4\build\msw
mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=debug
静态链接(发行版)============================================================
编译过程和前一版本主要差别在于“config.gcc”文件的修改内容:
SHARED ?= 0
UNICODE ?= 1
BUILD ?= release
其它操作方法不变。
或者
cmd:
D:
cd wxWidgets-2.9.4\build\msw
mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=release
动态链接(调试版)============================================================
编译过程和前一版本主要差别在于“config.gcc”文件的修改内容:
SHARED ?= 1
UNICODE ?= 1
BUILD ?= debug
其它操作方法不变。
或者
cmd:
D:
cd wxWidgets-2.9.4\build\msw
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=debug
动态链接(发行版)============================================================
编译过程和前一版本主要差别在于“config.gcc”文件的修改内容:
SHARED ?= 1
UNICODE ?= 1
BUILD ?= release
其它操作方法不变。
或者
cmd:
D:
cd wxWidgets-2.9.4\build\msw
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release
为了确保尽量顺利地完成编译,在“config.gcc”仅选择了最基本的编译选项。因此一些强大wxWidgets功能模块没有被编译成库,比如前面提到的非Unicode版,另外没有支持OpenGL、OBDC等功能。后面需要时,我们将会加上,并且令大家放心的是,这并不会带来又一次wxWidgets漫长完全编译。
编译完成后,所有静态链接库位于wxWidgets安装目录下的“lib\gcc_lib”子目录。而动态链接库位于 “lib\gcc_dll”子目录。
仔细观察,会发现库文件名称中,有不少带有“ud”字母的文件,其中‘d’表示“debug”,即调试版本 ,不带‘d’的通常是“release”版本。‘u’表示“Unicode”,即支持Unicode编码。虽然我们这一次编译的全部采用“Unicode”选项,但还是存在一些文件并不带‘u’字母,那是因为这些库并不涉及到字符串的国际化处理,所以不需要考虑编码,比如与Jpeg图形功能有关的库。
在gcc_dll目录下,除了扩展名为“.dll”的动态链接库以外,还存在大量的扩展为“.a”的文件,称为“导入库/Import library”。
//mingw32-make -f makefile.gcc BUILD=release SHARED=1 USE_OPENGL=1 USE_ODBC=1
//mingw32-make -f makefile.gcc BUILD=debug SHARED=1 USE_OPENGL=1 USE_ODBC=1