Install (MinGW)
This document contains instructions for building OpenBabel (OB) on Windows with MinGW. The resulting DLL (libopenbabel-3.dll) may be linked directly from Windows applications compiled with MinGW, so there is no need to deal with (import) libraries created with Microsoft Visual C++. This is especially useful if your existing software uses a GNU make based build system. Binaries created with MinGW are native and do not need an emulation layer, such as Cygwin.
Date: March 31, 2009, Andreas Maunz. Tested with OB 2.2.1 on Windows Vista.
Preliminaries:
OpenBabel requires libxml2 so make sure you have this library properly installed in your MinGW environment; libxml can be found here. Specifically, this requires you to edit the xml2-config script. I recommend you directly link a test application against libxml2.dll and insert the respective -I and -L flags into xml2-config. The relevant section of mine looks like this:
--cflags) echo -I/home/libxml2-2.7.3.win32/include/libxml -I/home/libxml2-2.7.3.win32/include
and
--libs) echo /c/Windows/System32/libxml2.dll -liconv -lm -Wl,-s -lwsock32 -liberty
Install current Msys and MinGW version.
Update to the latest version of g++ for MinGW (g++-sjlj, see also the release notes). Unpack gcc-g++-4.2.1-sjlj-2.tar.gz and gcc-core-4.2.1-sjlj-2.tar.gz in your MinGW root directory, unpack OB source, start Msys and change to OB directory.
Build OB:
./configure --without-boost --disable-dynamic-modules CXX=g++-sjlj cd src/formats/inchi make cd ../../../tools
Edit the Makefile and exchange the following lines
babel_DEPENDENCIES = ../src/libopenbabel.la babel_LDADD = ../src/libopenbabel.la
with
babel_DEPENDENCIES = ../src/libopenbabel.la $(formats_objects) babel_LDADD = ../src/libopenbabel.la $(formats_objects)
Repeat the editing for the rest of the executables if you need more than babel.exe. Then continue to build and install OB. The tools will be as well as the DLL will be placed in /local/bin (C:\Msys\local\bin).
cd .. make make install
--Amaunz 07:18, 31 March 2009 (PDT)