blob: 3d1f79ca42a469d8ebc93415a01383752b67a145 [file] [log] [blame]
Expat can be built on Windows in two ways:
using MS Visual Studio .NET or Cygwin.
* Cygwin:
This follows the Unix build procedures.
* MS Visual Studio 2013, 2015 and 2017:
Use CMake to generate a solution file for Visual Studio, then use msbuild
to compile. For example:
md build
cd build
cmake -G"Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
msbuild /m expat.sln
* All MS C/C++ compilers:
The output for all projects will be generated in the <CMAKE_BUILD_TYPE>\
and xmlwf\<CMAKE_BUILD_TYPE>\ directories.
* Creating MinGW dynamic libraries from MS VC++ DLLs:
On the command line, execute these steps:
pexports libexpat.dll > expat.def
pexports libexpatw.dll > expatw.def
dlltool -d expat.def -l libexpat.a
dlltool -d expatw.def -l libexpatw.a
The *.a files are mingw libraries.
* Special note about MS VC++ and runtime libraries:
There are three possible configurations: using the
single threaded or multithreaded run-time library,
or using the multi-threaded run-time Dll. That is,
one can build three different Expat libraries depending
on the needs of the application.
Dynamic Linking:
By default the Expat Dlls are built to link statically
with the multi-threaded run-time library.
The libraries are named
- libexpat(w).dll
- libexpat(w).lib (import library)
The "w" indicates the UTF-16 version of the library.
One rarely uses other versions of the Dll, but they can
be built with -DMSVC_USE_STATIC_CRT=OFF.
Static Linking: (through -DBUILD_shared=OFF)
The libraries should be named like this:
Multi-threaded: libexpat(w)MT.lib
Multi-threaded Dll: libexpat(w)MD.lib
The suffixes conform to the compiler switch settings
/MT and /MD for MS VC++.
An application linking to the static libraries must
have the global macro XML_STATIC defined.