错误信息类似于如下的结果:
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命令,从而会导致编译错误,对于这种情况,可以修改 $(WX)/build/msw目录中的makefile.gcc文件,使其默认采用CMD命令行。
makefile.gcc修改前: SHELL := $(COMSPEC)
makefile.gcc修改后: C:\WINDOWS\system32\CMD.exe (该路径为实际的CMD.exe的路径)
==============================================================================
最后还是顺便说一下MinGW编译wxWidgets的流程:
1 下载源代码 http://www.wxwidgets.org/downloads/
2 修改 $(WX)/build/msw 目录中的makefile.gcc文件 (可选)
3 修改 $(WX)/build/msw 目录中的congfig.gcc文件 ()
4 在控制台进入到 $(WX)/build/msw 目录中,执行 mingw32-make -f makefile.gcc
注: $(WX)表示你下载的源代码解压后的路径
对编译过程还不明白的可以查看官方说明:
==============================================================================
congfig.gcc文件
# =========================================================================# This configuration file was generated by# Bakefile 0.2.9 (http://www.bakefile.org)# Beware that all changes made to this file will be overwritten next# time you run Bakefile!# =========================================================================# -------------------------------------------------------------------------# These are configurable options:# -------------------------------------------------------------------------# Compiler flags to link shared library LINK_DLL_FLAGS ?= -shared# Compiler flags to link loadable module LINK_MODULE_FLAGS ?= -shared# C compiler CC = gcc# C++ compiler CXX = g++# Standard flags for CC CFLAGS ?= # Standard flags for C++ CXXFLAGS ?= # Standard preprocessor flags (common for CC and CXX) CPPFLAGS ?= # Standard linker flags LDFLAGS ?= # The C preprocessor CPP ?= $(CC) -E# What type of library to build? [0,1]SHARED ?= 1# Build wxUniversal instead of native port? [0,1]WXUNIV ?= 0# Compile Unicode build of wxWidgets? [0,1]UNICODE ?= 1# Use MSLU library when building Unicode version. [0,1]MSLU ?= 0# Type of compiled binaries [debug,release]BUILD ?= release# Should debugging info be included in the executables? The default value# "default" means that debug info will be included if BUILD=debug# and not included if BUILD=release. [0,1,default]DEBUG_INFO ?= default# Should __WXDEBUG__ be defined? The default value "default" means that it will# be defined if BUILD=debug and not defined if BUILD=release. [0,1,default]DEBUG_FLAG ?= default# Multiple libraries or single huge monolithic one? [0,1]MONOLITHIC ?= 1# Build GUI libraries? [0,1]USE_GUI ?= 1# Build wxHTML library (USE_GUI must be 1)? [0,1]USE_HTML ?= 1# Build multimedia library (USE_GUI must be 1)? [0,1]USE_MEDIA ?= 1# Build wxXRC library (USE_GUI must be 1)? [0,1]USE_XRC ?= 1# Build wxAUI library (USE_GUI must be 1)? [0,1]USE_AUI ?= 1# Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1]USE_RICHTEXT ?= 1# Build OpenGL canvas library (USE_GUI must be 1)? [0,1]USE_OPENGL ?= 0# Build ODBC database classes (USE_GUI must be 1)? [0,1]USE_ODBC ?= 0# Build quality assurance classes library (USE_GUI must be 1)? [0,1]USE_QA ?= 0# Enable exceptions in compiled code. [0,1]USE_EXCEPTIONS ?= 1# Enable run-time type information (RTTI) in compiled code. [0,1]USE_RTTI ?= 1# Enable threading in compiled code. [0,1]USE_THREADS ?= 1# Enable wxCairoContext for platforms other than Linux/GTK. [0,1]USE_CAIRO ?= 0# Link with gdiplus.lib? (Needed for wxGraphicsContext, will also set wxUSE_GRAPHICS_CONTEXT) [0,1]USE_GDIPLUS ?= 0# Is this official build by wxWidgets developers? [0,1]OFFICIAL_BUILD ?= 0# Use this to name your customized DLLs differently VENDOR ?= custom# WX_FLAVOUR ?= # WX_LIB_FLAVOUR ?= # Name of your custom configuration. This affects directory# where object files are stored as well as the location of# compiled .lib files and setup.h under the lib/ toplevel directory. CFG ?= # Compiler flags needed to compile test suite in tests directory. If you want# to run the tests, set it so that the compiler can find CppUnit headers. CPPUNIT_CFLAGS ?= # Linker flags needed to link test suite in tests directory. If you want# to run the tests, include CppUnit library here. CPPUNIT_LIBS ?= # Version of C runtime library to use. You can change this to# static if SHARED=0, but it is highly recommended to not do# it if SHARED=1 unless you know what you are doing. [dynamic,static]RUNTIME_LIBS ?= dynamic# Set the version of your Mingw installation here.# "3" ...... this is for Mingw 2.0 or newer (comes with gcc3)# "2.95" ... for Mingw 1.1 or any of the older versions [3,2.95]GCC_VERSION ?= 3