How to build and run FreeCAD under Cygwin ========================================= Prerequisites ------------- To compile FreeCAD, you will need, besides functioning Cygwin environment and programming tools (like compiler), the following libraries: o Python (http://www.python.org), >= 2.5.x o Qt (http://www.trolltech.no), >= 4.1.x o Coin3D (http://www.coin3d.org), >= 2.4.x o SoQt (http://www.coin3d.org), >= 1.2.x o Xerces-c (http://xml.apache.org/dist/xerces-c/) o zlib (http://www.zlib.net/) As far as I know, except of Coin3D and SoQt all libraries are available as prebuilt binary packages from one of the Cygwin mirrors. To install them, first download the latest version of setup.exe from www.cygwin.com and run it with administrator rights. Then follow the instructions of the wizard until the list of all available packages appears. Select the devel files of all the required libraries and install them. Then download the source tarballs of Coin3D and SoQt and unpack them into a directory of your choice. The Coin library can be built with ./configure --disable-msvc;make; make install. Building SoQt is a bit tricky and I haven't managed yet to build it in a proper way. There are various problems with X11 functions and Windows API functions which I don't know how to solve. And for the Mesh module of FreeCAD the additional libraries o GTS Library (http://gts.sourceforge.net) o Wild Magic (http://www.geometrictools.com) o OpenCASCADE (http://www.opencascade.org), you need >=5.2 here are required. OpenCASCADE is also needed by the Part and Raytracing modules. Note: As OpenCASCADE that is also required by the Mesh, Part and Raytracing modules is not available for Cygwin it is not possible to build them for this platform. It is planned for the future to move all OpenCASCADE dependencies of the Mesh module into a separate module so that at least this module can be built under Cygwin. Note: All libraries listed above must be built as shared library. Refer to their documentation to see how to do. Note: If possible you should enable thread support for the libraries. At least for Qt thread support is strongly recommended, otherwise you will run into linker errors at build time of FreeCAD. Note: zlib might be already on your system, as this is a library that is used from a lot of other libraries. Note: There seems to be various problems with Qt's uic tool of the Cygwin port. Due to these problems it is not possible to run the GUI under Cygwin at the moment. It is only possible to run the commandline version. Configuration ------------- For the build process of FreeCAD we make use of configure scripts. To have an overview of all options type in ./configure --help, first. If you have installed all libraries above into standard paths you need not any of the '--with' options at all. Unless you have installed any library into a non-standard path, then make use of the --with-XXX-includes or --with-XXX-libs options. (XXX represents the corresponding library.) Note: Due to some limitations of the Windows platform it is not possible to build libraries with unresolved symbols at link time. Thus it is strongly recommended to run ./configure with the option LDFLAGS=-no-undefined, otherwise the creation of shared libraries fails. For more details see section 11.2.1 Creating Libtool Libraries with Automake of the libtool documentation. Note: To specify FreeCAD's root directory it is recommended to use only the '--prefix' option from the configure script but not the --bindir, --libdir, ... options, because at startup FreeCAD makes assumptions where its lib-, doc-, .. directories reside. The default root directory is located in ~/FreeCAD. If you know how to work with GNU autoconf, feel free to contribute improvements to our configuration scripts --- that would be great. Installation ------------ Once you have built the sources successfully using 'make' with 'make install' you can install FreeCAD onto your machine whereever you want. Go to the directory FreeCAD/bin and just type in ./FreeCADCmd. FreeCAD's default root directory resides under ~/FreeCAD, so you don't need root privileges therefore.