Difference between revisions of "Compile on MacOS"
|Line 118:||Line 118:|
=== Download and 'install' the FreeCAD.app template ===
=== Download and 'install' the FreeCAD.app template ===
Revision as of 00:44, 17 November 2012
Since Mac OS X is BSD (UNIX) based, compiling FreeCAD on a Mac isn't much different from CompileOnUnix, however there are a number of Mac-specific details critical to getting everything working properly. These instructions have been tested on Lion (10.7), but should work on Intel Macs running (Snow) Leopard as well.
Download the FreeCAD sources
Check out the latest revision of the FreeCAD source tree from the Sourceforge subversion repository:
svn co http://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk free-cad
On Mac OS X 10.7, the following dependencies are NOT bundled with the operating and thus must be installed before building FreeCAD:
Option 1: Homebrew
Note: this section is still a work in progress! See the help forum post for the latest.
Download and install the package manager Homebrew:
Then compile and install most of FreeCAD's dependencies:
brew install sip gfortran xerces-c boost eigen coin qt pyqt soqt ftgl
Go on to CompileOnMac#Build OpenCASCADE.
Option 2: MacPorts/Fink
Note: this section is in need of updates.
Install MacPorts )if you don't already have it). MacPorts is a system that allows you to download, compile, and install many common open-source applications with a single command. Similar applications from the UNIX/Linux world are PKGSRC and APT. To install, just download the disk image from the MacPorts site and follow the directions:
Whether or not you just installed MacPorts, you'll probably want to make sure it's up to date. Run:
sudo port selfupdate
Now that MacPorts is installed and up to date, you can start installing some of FreeCAD's required packages:
The following command will compile/install the above libraries. If MacPorts produces errors, you may want to try installing them one at a time.
sudo port install xercesc boost ftgl f2c eigen3 py-sip py-pyqt4
Note that for python packages like py-sip and py-pyqt4, there are multiple packages, one for each MacPorts version of Python.
Note that boost is a large package, and py-pyqt4 depends on qt4-mac, which is a large package. You may want to run port -v install so that you have more of an idea what's going on during these long builds.
Qt4 is also available for Mac as a binary installer from the Qt web site. I'm not sure how nicely this approach plays with FreeCAD compiling.
Install Fortran Compiler
You also need a FORTRAN compiler. Apple's fork of gcc on OSX does not come with FORTRAN.
An installer for GFortran can be found here, and will do the trick:
If you are using fink, another method is to use the following commands (attempted by Shaneyfelt 2100.Nov.14)
sudo fink selfupdate sudo fink install gcc46
This installs another gcc compiler collection with the name gcc-4 to avoid a name conflict with the apple one.
MacPorts gcc4x packages also include FORTRAN compilers, so this should also work:
sudo port install gcc46
Another possible MacPorts package is g95. This seems to be a valid FORTRAN90 compiler and will pass FreeCAD's cmake configuration tests, but the actual build seems to ask for gcc-specific options, so probably easier to stick to gcc4x.
Download and unzip the latest eigen3 library here:
These are needed for solver functionality. Once unzipped, the folder named 'Eigen' can be dropped into
Currently, the easiest way to build OpenCASCADE on OS X is from the community edition (oce). Download the source or check out the Git repository from:
Then, in terminal:
mkdir build cd build cmake .. cd .. make make install/strip
You may need cmake:
sudo port install cmake
Download and 'install' the FreeCAD.app template
The following archive contains an application bundle template for FreeCAD. This is not strictly necessary, but it makes working with FreeCAD more convenient than the default installation configuration. The recommended install location for the bundle is the /Applications folder, but you should be able to put it anywhere you want -- just remember that the bundle can't be moved after FreeCAD is complied and installed without further modifications. Running make install using the configuration in the next step will install into this bundle.
Configure, compile, and install FreeCAD using the following commands from within the root FreeCAD folder. If you put your FreeCAD.app bundle somewhere other than /Applications (or aren't using the bundle), change the 'PREFIX' argument accordingly.
If you installed dependencies using Option 1 (Homebrew):
Note: this config line has not been verified and may contain errors!
./configure --with-xercesc-lib=/usr/local/lib --with-xercesc-include=/usr/local/include \ --with-boost-lib=/usr/local/lib --with-boost-include=/usr/local/include \ --with-qt4-dir=/usr/local--with-qt4-lib=/usr/local/lib --with-qt4-include=/usr/local/include \ --with-qt4-framework=/usr/local/lib --with-qt4-bin=/usr/local/bin --with-occ-lib=/usr/local/lib \ --with-occ-include=/usr/local/include/oce --with-coin=/usr/local/lib --with-soqt=/usr/local/lib \ --prefix=/Applications/FreeCAD.app/Contents --bindir=/Applications/FreeCAD.app/Contents/MacOS \ --libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \ --includedir=/Applications/FreeCAD.app/Contents/Resources/include \ --datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \ --with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
Or if you installed dependencies using Option 2 (MacPorts/Fink):
./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-include=/opt/local/include \ --with-boost-lib=/opt/local/lib --with-boost-include=/opt/local/include \ --with-qt4-dir=/usr/local/Trolltech/Qt-4.8.0 --with-qt4-lib=/usr/local/Trolltech/Qt-4.8.0/lib \ --with-qt4-include=/usr/local/Trolltech/Qt-4.8.0/include --with-qt4-framework=/Library/Frameworks \ --with-qt4-bin=/usr/local/Trolltech/Qt-4.8.0/bin --with-occ-lib=/usr/local/lib \ --with-occ-include=/usr/local/include/oce --with-coin=/Library/Frameworks \ --with-soqt=/Library/Frameworks --prefix=/Applications/FreeCAD.app/Contents \ --bindir=/Applications/FreeCAD.app/Contents/MacOS --libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \ --includedir=/Applications/FreeCAD.app/Contents/Resources/include \ --datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \ --with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
make make install
Depending on your machine's processing power, the make step can take quite a while.
If everything went OK, double-clicking the .app bundle should start FreeCAD. If you have any issues, post the details on the help forum.
Some users reported facing a "No Module named PyQt4" message on FreeCAD startup. This is a workaround to correct it:
cd /Library/Python/2.6/site-packages sudo ln -s /contrib/lib/python2.6/site-packages/PyQt4 . sudo ln -s /contrib/lib/python2.6/site-packages/sip* . cd /volatile/FreeCAD-r5443-ser/bin/pivy cp _coin.dylib _coin.so cd /volatile/FreeCAD-r5443-ser/lib for i in *.dylib; do j=`basename $i .dylib`; cp $i $j.so; done
Some FreeCAD components won't work without Pivy. See here for partial build instructions.