Compile on MacOS/sv: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 6: Line 6:
=== Git ===
=== Git ===
The quickest and best way to get the code is to clone the read-only git repository (you need the [http://git-scm.com/ git] package installed):
The quickest and best way to get the code is to clone the read-only git repository (you need the [http://git-scm.com/ git] package installed):
<pre>
git clone git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad freecad
git clone git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad freecad
</pre>
This will place a copy of the latest version of the FreeCAD source code in a new directory called "freecad". The first time you try connecting to the free-cad.git.sourceforge.net host, you will receive a message asking to authenticate the sourceforge SSH key, which is normally safe to accept (you can check their SSH keys on the sourceforge website if you are not sure)
This will place a copy of the latest version of the FreeCAD source code in a new directory called "freecad". The first time you try connecting to the free-cad.git.sourceforge.net host, you will receive a message asking to authenticate the sourceforge SSH key, which is normally safe to accept (you can check their SSH keys on the sourceforge website if you are not sure)


Line 12: Line 14:
There is an always up to date FreeCAD repository on Gihub:
There is an always up to date FreeCAD repository on Gihub:
[https://github.com/FreeCAD/FreeCAD_sf_master github.com/FreeCAD/FreeCAD_sf_master]
[https://github.com/FreeCAD/FreeCAD_sf_master github.com/FreeCAD/FreeCAD_sf_master]

=== Source package ===
=== Source package ===
Alternatively you can download a source package, but they could be already quite old so it's always better to get the latest sources. Depending on your distribution, there are several ways to obtain a source package:
Alternatively you can download a source package, but they could be already quite old so it's always better to get the latest sources. Depending on your distribution, there are several ways to obtain a source package:

Official FreeCAD source packages (distribution-independent): https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/
Official FreeCAD source packages (distribution-independent):
Debian: http://packages.debian.org/source/sid/freecad
https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/
Ubuntu: http://packages.ubuntu.com/source/precise/freecad

Debian:
http://packages.debian.org/source/sid/freecad

Ubuntu:
http://packages.ubuntu.com/source/precise/freecad

=== Install Dependencies ===
=== Install Dependencies ===
On Mac OS X 10.7, the following dependencies are NOT bundled with the operating and thus must be installed before building FreeCAD:
On Mac OS X 10.7, the following dependencies are NOT bundled with the operating and thus must be installed before building FreeCAD:
Line 38: Line 46:
:http://mxcl.github.com/homebrew/
:http://mxcl.github.com/homebrew/
Then compile and install most of FreeCAD's dependencies:
Then compile and install most of FreeCAD's dependencies:
<pre>
brew install sip gfortran xerces-c boost eigen coin qt pyqt soqt ftgl
brew install sip gfortran xerces-c boost eigen coin qt pyqt soqt ftgl
</pre>
Go on to [[CompileOnMac#Build OpenCASCADE]].
Go on to [[CompileOnMac#Build OpenCASCADE]].
==== Option 2: MacPorts/Fink ====
==== Option 2: MacPorts/Fink ====
Line 48: Line 58:
Whether or not you just installed MacPorts, you'll probably want to make sure it's up to date. Run:
Whether or not you just installed MacPorts, you'll probably want to make sure it's up to date. Run:
<pre>
sudo port selfupdate
sudo port selfupdate
</pre>
Now that MacPorts is installed and up to date, you can start installing some of FreeCAD's required packages:
Now that MacPorts is installed and up to date, you can start installing some of FreeCAD's required packages:
Line 60: Line 72:
*Coin
*Coin
The following command will compile/install the above libraries. If MacPorts produces errors, you may want to try installing them one at a time.
The following command will compile/install the above libraries. If MacPorts produces errors, you may want to try installing them one at a time.
<pre>
sudo port install xercesc boost ftgl f2c eigen3 py-sip py-pyqt4 Coin
sudo port install xercesc boost ftgl f2c eigen3 py-sip py-pyqt4 Coin
</pre>
Note that for python packages like py-sip and py-pyqt4, there are multiple packages, one for each MacPorts version of Python.
Note that for python packages like py-sip and py-pyqt4, there are multiple packages, one for each MacPorts version of Python.


Line 68: Line 82:


It is also possible to choose the version of the gcc compiler to use, some recent versions might sometimes cause problems:
It is also possible to choose the version of the gcc compiler to use, some recent versions might sometimes cause problems:
<pre>
sudo port -v install gcc_select
sudo port select --list gcc
sudo port -v install gcc_select
sudo port select --set gcc mp-gcc46
sudo port select --list gcc
sudo port select --set gcc mp-gcc46
</pre>
'''Install Fortran Compiler'''
'''Install Fortran Compiler'''


Line 77: Line 93:
An installer for GFortran can be found here, and will do the trick:
An installer for GFortran can be found here, and will do the trick:
http://gcc.gnu.org/wiki/GFortranBinaries#MacOS
http://gcc.gnu.org/wiki/GFortranBinaries#MacOS
If you are using fink, another method is to use the following commands (attempted by Shaneyfelt 2100.Nov.14)
If you are using fink, another method is to use the following commands (attempted by Shaneyfelt 2100.Nov.14)
<pre>
sudo fink selfupdate
sudo fink install gcc46
sudo fink selfupdate
sudo fink install gcc46
</pre>
''This installs another gcc compiler collection with the name gcc-4 to avoid a name conflict with the apple one.''
''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:
MacPorts gcc4x packages also include FORTRAN compilers, so this should also work:
<pre>
sudo port install gcc46
sudo port install gcc46
</pre>
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.
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.


Line 99: Line 119:
:https://github.com/tpaviot/oce
:https://github.com/tpaviot/oce
Then, in terminal:
Then, in terminal:
<pre>
mkdir build
cd build
mkdir build
cd build
cmake ..
cd ..
cmake ..
cd ..
make
make install/strip
make
make install/strip
</pre>
You may need cmake:
You may need cmake:
<pre>
sudo port install cmake
sudo port install cmake
</pre>
=== Download and 'install' the FreeCAD.app template ===
=== 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.
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.
Line 112: Line 136:
=== Compile ===
=== Compile ===
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.
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.
<pre>
./autogen.sh
./autogen.sh
PREFIX=/Applications/FreeCAD.app/Contents
PREFIX=/Applications/FreeCAD.app/Contents
</pre>
If you installed dependencies using Option 1 (Homebrew):
If you installed dependencies using Option 1 (Homebrew):


''Note'': this config line has not been verified and may contain errors!
''Note'': this config line has not been verified and may contain errors!
<pre>
./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 \
./configure --with-xercesc-lib=/usr/local/lib --with-xercesc-include=/usr/local/include \
--with-qt4-dir=/usr/local--with-qt4-lib=/usr/local/lib --with-qt4-include=/usr/local/include \
--with-boost-lib=/usr/local/lib --with-boost-include=/usr/local/include \
--with-qt4-framework=/usr/local/lib --with-qt4-bin=/usr/local/bin --with-occ-lib=/usr/local/lib \
--with-qt4-dir=/usr/local--with-qt4-lib=/usr/local/lib --with-qt4-include=/usr/local/include \
--with-occ-include=/usr/local/include/oce --with-coin=/usr/local/lib --with-soqt=/usr/local/lib \
--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 \
--prefix=/Applications/FreeCAD.app/Contents --bindir=/Applications/FreeCAD.app/Contents/MacOS \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--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
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
</pre>
Or if you installed dependencies using Option 2 (MacPorts/Fink):
Or if you installed dependencies using Option 2 (MacPorts/Fink):
<pre>
./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 \
./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-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-boost-lib=/opt/local/lib --with-boost-include=/opt/local/include \
--with-qt4-include=/usr/local/Trolltech/Qt-4.8.0/include --with-qt4-framework=/Library/Frameworks \
--with-qt4-dir=/usr/local/Trolltech/Qt-4.8.0 --with-qt4-lib=/usr/local/Trolltech/Qt-4.8.0/lib \
--with-qt4-bin=/usr/local/Trolltech/Qt-4.8.0/bin --with-occ-lib=/usr/local/lib \
--with-qt4-include=/usr/local/Trolltech/Qt-4.8.0/include --with-qt4-framework=/Library/Frameworks \
--with-occ-include=/usr/local/include/oce --with-coin=/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 \
--with-soqt=/Library/Frameworks --prefix=/Applications/FreeCAD.app/Contents \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--bindir=/Applications/FreeCAD.app/Contents/MacOS --libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--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
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
Then:
</pre>
make
Then:
make install
<pre>
make
make install
</pre>
Depending on your machine's processing power, the make step can take quite a while.
Depending on your machine's processing power, the make step can take quite a while.


Line 151: Line 183:


Some users reported facing a "No Module named PyQt4" message on FreeCAD startup. This is a workaround to correct it:
Some users reported facing a "No Module named PyQt4" message on FreeCAD startup. This is a workaround to correct it:
<pre>
cd /Library/Python/2.6/site-packages
sudo ln -s /contrib/lib/python2.6/site-packages/PyQt4 .
cd /Library/Python/2.6/site-packages
sudo ln -s /contrib/lib/python2.6/site-packages/sip* .
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
cd /volatile/FreeCAD-r5443-ser/bin/pivy
cp _coin.dylib _coin.so
cp _coin.dylib _coin.so
cd /volatile/FreeCAD-r5443-ser/lib
cd /volatile/FreeCAD-r5443-ser/lib
for i in *.dylib; do j=`basename $i .dylib`; cp $i $j.so; done
for i in *.dylib; do j=`basename $i .dylib`; cp $i $j.so; done
</pre>
=== Pivy ===
=== Pivy ===
Some FreeCAD components won't work without Pivy. See [[Extra_python_modules#Pivy|here]] for partial build instructions.
Some FreeCAD components won't work without Pivy. See [[Extra_python_modules#Pivy|here]] for partial build instructions.

Revision as of 20:59, 7 November 2014

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.

Getting the source

Before you can compile FreeCAD, you need the source code. There are 3 ways to get it:

Git

The quickest and best way to get the code is to clone the read-only git repository (you need the git package installed):

git clone git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad freecad

This will place a copy of the latest version of the FreeCAD source code in a new directory called "freecad". The first time you try connecting to the free-cad.git.sourceforge.net host, you will receive a message asking to authenticate the sourceforge SSH key, which is normally safe to accept (you can check their SSH keys on the sourceforge website if you are not sure)

Github

There is an always up to date FreeCAD repository on Gihub: github.com/FreeCAD/FreeCAD_sf_master

Source package

Alternatively you can download a source package, but they could be already quite old so it's always better to get the latest sources. Depending on your distribution, there are several ways to obtain a source package:

Official FreeCAD source packages (distribution-independent): https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/

Debian: http://packages.debian.org/source/sid/freecad

Ubuntu: http://packages.ubuntu.com/source/precise/freecad

Install Dependencies

On Mac OS X 10.7, the following dependencies are NOT bundled with the operating and thus must be installed before building FreeCAD:

  • sip
  • fortran
  • xerces-c
  • boost
  • eigen
  • ftgl
  • coin3d
  • OpenCASCADE
  • Qt
  • pyqt
  • soqt

Option 1: Homebrew

Note: this section is still a work in progress! See the help forum post for the latest.

https://forum.freecadweb.org/viewtopic.php?f=4&t=2064&p=15405

Download and install the package manager Homebrew:

http://mxcl.github.com/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:

http://www.macports.org/install.php

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:

  • xercesc
  • boost
  • py-sip
  • ftlg
  • f2c
  • eigen3
  • py-pyqt4
  • Coin

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 Coin

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.

It is also possible to choose the version of the gcc compiler to use, some recent versions might sometimes cause problems:

sudo port -v install gcc_select
sudo port select --list gcc
sudo port select --set gcc mp-gcc46

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: http://gcc.gnu.org/wiki/GFortranBinaries#MacOS 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.

Install Eigen3

Download and unzip the latest eigen3 library here: http://eigen.tuxfamily.org/index.php?title=Main_Page These are needed for solver functionality. Once unzipped, the folder named 'Eigen' can be dropped into

/usr/local/include/eigen3/

Build OpenCASCADE

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:

https://github.com/tpaviot/oce

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.

http://dl.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_20091128.tar.gz

Compile

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.

./autogen.sh
 	
PREFIX=/Applications/FreeCAD.app/Contents

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

Then:

make	
make install

Depending on your machine's processing power, the make step can take quite a while.

Run

If everything went OK, double-clicking the .app bundle should start FreeCAD. If you have any issues, post the details on the help forum.

PyQt4

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

Pivy

Some FreeCAD components won't work without Pivy. See here for partial build instructions.


CompileOnUnix
Third Party Libraries