1 2Expat can be built on Windows in two ways: 3 using MS Visual Studio .NET or Cygwin. 4 5* Cygwin: 6 This follows the Unix build procedures. 7 8* MS Visual Studio 2013, 2015 and 2017: 9 Use CMake to generate a solution file for Visual Studio, then use msbuild 10 to compile. For example: 11 12 md build 13 cd build 14 cmake -G"Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=RelWithDebInfo .. 15 msbuild /m expat.sln 16 17* All MS C/C++ compilers: 18 The output for all projects will be generated in the <CMAKE_BUILD_TYPE>\ 19 and xmlwf\<CMAKE_BUILD_TYPE>\ directories. 20 21* Creating MinGW dynamic libraries from MS VC++ DLLs: 22 23 On the command line, execute these steps: 24 pexports libexpat.dll > expat.def 25 pexports libexpatw.dll > expatw.def 26 dlltool -d expat.def -l libexpat.a 27 dlltool -d expatw.def -l libexpatw.a 28 29 The *.a files are mingw libraries. 30 31* Special note about MS VC++ and runtime libraries: 32 33 There are three possible configurations: using the 34 single threaded or multithreaded run-time library, 35 or using the multi-threaded run-time Dll. That is, 36 one can build three different Expat libraries depending 37 on the needs of the application. 38 39 Dynamic Linking: 40 41 By default the Expat Dlls are built to link dynamically 42 with the multi-threaded run-time library. 43 The libraries are named 44 - libexpat(w).dll 45 - libexpat(w).lib (import library) 46 The "w" indicates the UTF-16 version of the library. 47 48 Versions that are statically linking with the multi-threaded run-time library 49 can be built with -DEXPAT_MSVC_STATIC_CRT=ON. 50 51 Static Linking: (through -DEXPAT_SHARED_LIBS=OFF) 52 53 The libraries should be named like this: 54 Multi-threaded: libexpat(w)MT.lib 55 Multi-threaded Dll: libexpat(w)MD.lib 56 The suffixes conform to the compiler switch settings 57 /MT and /MD for MS VC++. 58 59 An application linking to the static libraries must 60 have the global macro XML_STATIC defined. 61