Building on Win32. Building libical on Windows is a different process than building it on the other platforms: Instead of autogenerating makefiles using the autoconf/automake/make tools, Microsoft project files (.dsp) are used. Here are the requirements and steps to build libical on the Win32 platform. Software Requirements --------------------- The following softwares need to be installed for a standard Windows build: - Microsoft Visual C++ 6.0 or higher (only tested on 6.0 as of today). - GNU Tools for Microsoft Windows (the cygwin toolkit). cygwin is a UNIX-like environment for Windows, free from Red Hat. libical uses a few set of cygwin packages, which must be installed. Go to http://www.cygwin.com and follow the installation instructions. The cygwin installer wizard runs as a Windows program. One page of the wizard presents an outline view of categories and packages. Here is a list of the cygwin packages needed for building libical: . base --> ash : Unix-like command line interpreter shell. . base --> grep: GNU grep, egrep and fgrep . interpreters --> perl: A scripting language used to autogenerate some header files. Environment Variables --------------------- Visual C++ needs to be able to launch the cygwin tools. To do so, you can either: - add the path to the cygwin tools (by default c:\cygwin\bin) to your global or user Path enviroment variable, - or, in Visual C++ go to Tools --> Options --> Directories --> Show directories for Executable files and add the path to the cygwin tools (by default c:\cygwin\bin). Building the library -------------------- You need to build each subcomponent of libical one by one in the following order: . src/libical/libical.dsp . src/libicalss/libicalss.dsp . src/libicalvcal/libicalvcal.dsp Testing your build ------------------ libical comes with 2 regression test programs: . src/test/recur.dsp . src/test/regression.dsp Building those and running them (from the command line or from VC++) is probably a good idea to check that your build is OK. The results are pretty much self explanatory. Of course, running the regression tests becomes mandatory if you're planning on submitting a change. Using the library ----------------- By default, the library is created as a static library under src/libical/Debug/libical.lib (Debug version). You can also create a Release version which will be put under src/libical/Release/libical.lib. The header file ical.h is autogenerated by the build process and should be located under src/libical/ical.h. The library is created using the (Debug) Multithreaded DLL run-time library option. Be sure that you have the same setting in your application (Project --> Settings --> C/C++ --> Code Generation) or things will start to break. The symptoms of this problem are link time errors like: MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgheap.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgheap.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strncmp already defined in LIBCMTD.lib(strncmp.obj) Alternatively, you can alter the libical .dsp files and recompile the library.