| |
| 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 dynamically |
| 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. |
| |
| Versions that are statically linking with the multi-threaded run-time library |
| can be built with -DEXPAT_MSVC_STATIC_CRT=ON. |
| |
| Static Linking: (through -DEXPAT_SHARED_LIBS=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. |