CompileOnUnix/ro

Pe distribuțiile linux recente, FreeCAD este în general ușor de complialt, deoarece toate dependențele sunt de obicei furnizate de managerul de pachete. În esență, implică 3 pași:
 * 1) Obținerea codului sursă al FreeCAD
 * 2) Obținerea dependențelor (depinde de pachetele FreeCAD)
 * 3) Configurați cu "cmake" și compilați cu "make"

Mai jos, veți găsi explicații detaliate ale întregului proces, unele build scripts, și particularitățile pe care le-ați putea întâlni. Dacă găsiți ceva greșit sau depășit în textul de mai jos (distribuțiile Linux se schimbă adesea) sau dacă utilizați o distribuție care nu este listată, vă rugăm să ne ajutați să o corectăm.

Obținerea sursei
Înainte de a putea să compilați FreeCAD, aveți nevoie de codul sursă. Există 3 moduri de a o obține:

Git
Cea mai rapidă și cea mai bună modalitate de a obține codul este clonarea repositorii git read-only acum găzduită pe GitHub (aveți nevoie de pachetul git instalat ):

Aceasta va plasa o copie a celei mai recente versiuni a codului sursă FreeCAD într-un nou director denumit "freecad-code".

Source package
Alternativ, puteți descărca un pachet sursă, dar acestea ar putea fi deja destul de vechi, deci este întotdeauna mai bine să obțineți cele mai recente surse prin intermediul git sau github.

Getting the dependencies
To compile FreeCAD under Linux you have to install all libraries mentioned in Third Party Libraries first. Please note that the names and availability of the libraries will depend on your distribution. Note that if you don't use the most recent version of your distribution, some of the packages below might be missing from your repositories. In that case, look in the Older and non-conventional distributions section below.

Skip to Compile FreeCAD

Debian and Ubuntu
On Debian-based systems (Debian, Ubuntu, Mint, etc...) it is quite easy to get all needed dependencies installed. Most of the libraries are available via apt-get or synaptic package manager.

If you already installed FreeCAD from the official repositories, you can install its build dependencies with this single line of code in a terminal:

However, if the version of FreeCAD in the repositories is old, the dependencies may be the wrong ones to compile a recent version of FreeCAD. Therefore, please verify that you have installed the following packages.

These packages are essential for any sort of compilation to succeed:
 * , installs the C and C++ compilers and C libraries.
 * , essential tool to configure the source of FreeCAD.
 * , essential tools to produce shared libraries.

Scripting in FreeCAD uses the Python language; if you are using a Debian based distribution it's probably already installed. Python 2 was obsoleted in 2019 so new development should not be done in this version of the language.

The Boost libraries need to be installed:

The Coin libraries need to be installed.
 * , for Debian Jessie, Stretch, Ubuntu 16.04 to 18.10, or
 * , for Debian Buster, Ubuntu 19.04 and newer, as well as for Ubuntu 18.04/18.10 with the freecad-stable/freecad-daily PPAs added to your software sources.

Some utilities needs to be installed:
 * , to report the system used.
 * , to integrate C++ code with Python.

Several libraries that deal with mathematics, triangulated surfaces, sorting, meshes, computer vision, cartographic projections, 3D visualization, the X11 Window system, XML parsing, and Zip file reading:
 * or
 * or
 * or
 * or
 * or
 * or
 * or
 * or

Python 2 and Qt4
To compile FreeCAD for Debian Jessie, Stretch, Ubuntu 16.04, using Python 2 and Qt4, install the following dependencies. This is not recommended anymore as both Python 2 and Qt4 are obsolete and will disappear from future Linux distributions.

Python 3 and Qt5
To compile FreeCAD for Debian Buster, Ubuntu 19.04 and newer, as well as Ubuntu 18.04/18.10 with the freecad-stable/freecad-daily PPAs added to your software sources, install the following dependencies.
 * or
 * or
 * or
 * or
 * or

OpenCascade kernel
The OpenCascade kernel is the core graphics library to create 3D shapes. It exists in an official version OCCT, and a community version OCE. The community version is no longer recommended, as it's outdated.

For Debian Buster and Ubuntu 18.10 and newer, as well as Ubuntu 18.04 with the freecad-stable/freecad-daily PPAs added to your software sources, install the official packages.

For Debian Jessie, Stretch, Ubuntu 16.04 and newer, install the community edition packages.

Note that liboce*-dev includes the following libraries:

Optionally you can also install these extra packages:

Single command for Python 3 and Qt5
Requires Pyside2 available in Debian buster and the freecad-stable/freecad-daily PPAs.

Single command for Python 2 and Qt4
Ubuntu 16.04 users please see also these Additional instructions.

Fedora
You need the following packages :


 * gcc-c++ (or possibly another C++ compiler?)
 * cmake
 * doxygen
 * swig
 * gettext
 * dos2unix
 * desktop-file-utils
 * libXmu-devel
 * freeimage-devel
 * mesa-libGLU-devel
 * OCE-devel
 * python
 * python-devel
 * python-pyside-devel
 * pyside-tools
 * boost-devel
 * tbb-devel
 * eigen3-devel
 * qt-devel
 * qt-webkit-devel
 * ode-devel
 * xerces-c
 * xerces-c-devel
 * opencv-devel
 * smesh-devel
 * coin3-devel

(if coin2 is the latest available for your version of Fedora, use packages from http://www.zultron.com/rpm-repo/)
 * soqt-devel
 * freetype
 * freetype-devel

And optionally :


 * libspnav-devel (for 3Dconnexion devices support like the Space Navigator or Space Pilot)
 * pivy ( https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy is not mandatory but needed for the Draft module)

Gentoo
Easiest way to check which packages are needed to compile FreeCAD is to check via portage:

emerge -pv freecad

This should give a nice list of extra packages that you need installed on your system.

If FreeCAD is not available on portage, it is available on the waebbl overlay. The issue tracker on the waebbl overlay Github may help guide through some issues you may come across. The overlay provides freecad-9999, which you can choose to compile, or simply use to get the dependencies.

layman -a waebbl

Tumbleweed
The following commands will install the packages required for building FreeCAD with Qt5 and Python 3.

The following command will install Qt Creator and the GNU Project Debugger.

If any packages are missing, then you can check the Tumbleweed "FreeCAD.spec" file on the Open Build Service.

Also, check to see if there are any patches you need to apply (such as 0001-find-openmpi2-include-files.patch).

Leap
If there is a difference between the available packages on Tumbleweed and Leap, then you can read the Leap "FreeCAD.spec" file on the Open Build Service to determine the required packages.

Arch Linux
You will need the following libraries from the official repositories:


 * boost-libs
 * curl
 * desktop-file-utils
 * glew
 * hicolor-icon-theme
 * jsoncpp
 * libspnav
 * med
 * opencascade
 * shiboken2
 * xerces-c
 * pyside2
 * python-matplotlib
 * python-netcdf4
 * qt5-svg
 * qt5-webkit
 * qt5-webengine
 * boost
 * cmake
 * eigen
 * git
 * gcc-fortran
 * pyside2-tools
 * swig
 * qt5-tools
 * shared-mime-info

Also, make sure to check the AUR for any missing packages that are not on the repositories, currently:
 * coin
 * python-pivy
 * med

Older and non-conventional distributions
On other distributions, we have very few feedback from users, so it might be harder to find the required packages. Try first locating the required libraries mentioned in Third Party Libraries. Beware that some of them might have a slightly different package name in your distribution (such as name, libname, name-dev, name-devel, etc...).

You also need the GNU gcc compiler version equal or above 3.0.0. g++ is also needed because FreeCAD is completely written in C++. During the compilation some Python scripts get executed. So the Python interpreter has to work properly. To avoid any linker problems during the build process it is also a good idea to have the library paths either in your LD_LIBRARY_PATH variable or in your ld.so.conf file. This is normally already the case in recent distributions.

For more details have also a look to README.Linux in your sources.

Pivy
Pivy is not needed to build FreeCAD or to run it, but it is needed for the Draft module to work. If you are not going to use that module, you won't need pivy. By November 2015 the obsolete version of Pivy included with FreeCAD source code will no longer compile on many systems, due to its age. If you cannot find Pivy in your distribution's packages repository or elsewhere, you can compile pivy yourself:

Compilare FreeCAD
FreeCAD uses CMake as its main build system. CMake is a build system available on all major operating systems. Compiling with CMake is usually very simple and happens in two steps.


 * 1) CMake checks that every needed program and library is present on your system, and configures the build system for the second step. FreeCAD has several configuration options to choose from, but it comes with sensible defaults. Some alternatives are detailed below.
 * 2) The compilation itself, which produces the FreeCAD executable.

Since FreeCAD is a heavy application, compiling can take a bit of time (about 10 minutes on a fast machine, 30 minutes (or more) on a slow one)

You can build the code either in or out of the source directory. Out-of-source building is generally the best option.

Out-of-source build
If you intend to follow the fast evolution of FreeCAD, building in a separate folder is much more convenient. Every time you update the source code, cMake will then intelligently distinguish which files have changed, and recompile only what is needed. Out-of-source builds are specially handy when using the Git system, because you can easily try other branches without confusing the build system. To build out-of-source, simply create a build directory, distinct from your FreeCAD source folder, and, from the build folder, point cMake (or if using cmake-gui replace "cmake" in the code below with "cmake-gui") to the source folder:

The option of  controls how many jobs (files) are compiled in parallel. The program prints the number of CPU cores in your system; by using it together with the  option you can choose to work on as many files as you have cores in order to speed up compilation. In the example, it will use all cores except two; this will keep your system responsive while compilation proceeds in the background. The FreeCAD executable will eventually appear in the directory.

In-source building
If you are unsure then, due to its limitations, do not make an in-source build, create an out-of-source build as explained in the next section. However FreeCAD can be built in-source, which means that all the files resulting from the compilation stay in the same folder as the source code. This is fine if you are just looking at FreeCAD, and want to be able to remove it easily by just deleting that folder. But in case you are planning to compile it often, you are advised to make an out-of-source build, which offers many more advantages. The following commands will compile FreeCAD:

In-source builds are fine if you are just looking at FreeCAD, and want to be able to remove it easily by just deleting that folder.

The following commands will compile FreeCAD:

The FreeCAD executable will then reside in the directory.

How to repair your source code directory after accidentally running an in-source build.
This is a method, using Git, to repair your source code directory after accidentally running an in-source build.

If you accidentally performed a compilation inside the source code directory, and would like to restore the contents to only the original source code, you can perform the following steps.

The first line clears the file. This ensures that the following clean and reset commands will affect everything in the directory and will not ignore items matching the expressions in. The second line deletes all files and directories that are not tracked by the git repository; then the last command will reset any changes to tracked files, including the first command which cleared the file.

If you do not clear the source directory, subsequent runs of may not capture new options to the system if the code changes.

Configuration
By passing different options to CMake, you can change how FreeCAD is compiled. The syntax is as follows.

Where is the directory that contains the source code. The may be omitted in most cases. The space after the option may also be omitted.

For example, to avoid building the FEM module:

All possible variables are listed in the file, located in the  directory. In this file, search for the word to see all the variables that can be set and their default values.

Alternatively, use the command to list the current configuration, and thus all variables that can be changed (a big list). Below, we've listed some of the more relevant options you may want to use.

For a Debug build
Create a build to troubleshoot crashes in FreeCAD. Beware that with this build the Sketcher becomes very slow with complex sketches.

Or for a Release build
Create a build to test code that doesn't crash. A build will run much faster than a  build.

Building against Qt5
By default, FreeCAD builds for Qt4. It is possible to build for Qt5 with the following option.

Building against Python 3 and Qt5
In a modern Linux distribution you only need to provide the path to the Python interpreter for the compilation system to be configured correctly.

Building for a specific Python version
By default your system may use Python 2, so CMake will try to configure the compilation of FreeCAD against this version. It is possible to choose a specific version of Python by specifying the desired Python executable.

If that doesn't work, you may have to define other variables with the required Python directories.

The locations and version numbers of your Python files and directories will depend on your particular distribution. Use to show the version of Python that you are using currently. Only the first two numbers are necessary; for example, if the result is, you need to specify the directories that relate to the 3.6 version. If you don't know the right directories, try searching for them with the command.

Also use in a terminal to determine the  or  directories.

Building with Qt Creator against Python 3 and Qt5
To compile in Qt Creator add the following to the bottom of.

Again, specify the correct paths and Python version that you want to use.

Go to and choose  to compile the graphical version of FreeCAD, or  to compile only the command line version.

Qt designer plugin
If you want to develop Qt code for FreeCAD, you'll need the Qt Designer plugin that provides all custom widgets of FreeCAD.

Go to

and call

to create a Makefile.

Once that's done, run

to create a library. To make this library known to Qt Designer you have to copy the file to.

External or internal Pivy
Previously, a version of Pivy was included in the source code of FreeCAD (internal). If you wanted to use your system's copy of Pivy (external), you needed to use.

Using external Pivy became the default during development of FreeCAD 0.16, therefore this option does not need to be set manually anymore.

Doxygen
If you have Doxygen installed you can build the source code documentation. See source documentation for instructions.

Compilarea unui pachet Debian
Dacă intenționați să compilați un pachet Debian din surse, trebuie să instalați mai întâi aceste pachete:

To build a package open a console, simply go to the FreeCAD directory and call

Once the package is built, you can use lintian to check if the package contains errors

Note for 64bit systems
When building FreeCAD for 64-bit there is a known issue with the OpenCASCADE 64-bit package. To get FreeCAD running properly you might need to run the ./configure script with the additional define _OCC64 set:

For Debian based systems this workaround is not needed when using the prebuilt package because there the OpenCASCADE package is built to set internally this define. Now you just need to compile FreeCAD the same way as described above.

Scripturi automate de compilare
Aici este tot ceea ce aveți nevoie pentru o compilare completă a FreeCAD.Este o abordare cu un script și funcționează pe un distro nou instalat. Comenzile vor cere parola de root (pentru instalarea pachetelor) și cândva să or să recunoască o amprentă pentru un server de depozitare extern sau un repository de subversiune https.Aceste scripturi ar trebui rulați pe versiuni de 32 și 64 de biți. Ele sunt scrise pentru versiuni diferite, dar este de asemenea, probabil să ruleze pe o versiune ulterioară cu sau fără schimbări majore.

If you have such a script for your preferred distro, please send it! We will incorporate it into this article.

Ubuntu
These scripts provide a reliable way to install the correct set of dependencies required to build and run FreeCAD on Ubuntu. They make use of the FreeCAD Ubuntu PPA repositories, and should work on any version of Ubuntu targeted by the PPA. The 'daily' PPA targets recent versions of Ubuntu, and the 'stable' PPA targets all officially supported versions of Ubuntu.

This script installs dependencies for the daily development snapshot of FreeCAD.

This script installs dependencies for the latest stable release of FreeCAD. (For Ubuntu 12.04, omit "--enable-source" from the add-apt-repository command.)

(These scripts also install the PPA build of FreeCAD itself, as a side effect. You could then uninstall that while leaving the dependencies in place. However, leaving it installed will enable the package manager to keep the set of dependencies up to date, which is useful if you are following the development for a long time.)

After installing the dependencies, please see the generic instructions for getting the source code, running CMake, and compiling. The following script is an example of one way to do this.

OpenSUSE 12.2
No external Repositories are needed to compile FreeCAD 0.13 with this release. However, there is an imcompatability with python3-devel which needs to be removed. FreeCAD can be compiled from GIT similar to in OpenSUSE 12.2

Since you are using git, next time you wish to compile you do not have to clone everything, just pull from git and compile once more

Fedora 27/28/29
Posted by user [PrzemoF] in the forum.

{ echo "~/$MAIN_DIR already exist. Quitting.."; exit; } cd $MAIN_DIR git clone https://github.com/FreeCAD/FreeCAD.git mkdir $BUILD_DIR

Arch using AUR
Arch User Repository (AUR) is a collection user made recipes to build packages which are not officially supported by distribution maintainers / community. They are usually safe. You can see who maintain the package and for how long he did. It is recommended to check construction files. Also non open source software are available in this area even if maintained by the official owning company.

Prerequisite : git

Steps :
 * 1) Open a terminal. Optionally create a directory eg. . Optionally change directory eg..
 * 2) Clone the AUR repository :
 * 3) Enter AUR repository folder :
 * 4) Compile using Arch makepkg : . The -s or --syncdeps flag will also install required dependencies.
 * 5) Install created package : or double click on the pkgname-pkgver.pkg.tar.xz inside your file browser.

To update FreeCAD to latest build just repeat from step 3. Update AUR repo when there is some breaking change in the recipe or new features using inside the folder.

Actualizarea codului sursă
Dezvoltarea programului FreeCAD se întâmplă rapid, în fiecare zi sau în repetate rânduri există bug-uri sau noi caracteristici. Sistemele cmake vă permit să actualizați inteligent codul sursă și să recompilați doar ceea ce sa schimbat, făcând compilații ulterioare foarte rapid. Actualizarea codului sursă cu git sau subversiune este foarte ușoară:

The CMake system allows you to intelligently update the source code, and only recompile what has changed, making subsequent compilations faster.

Move to the location where the FreeCAD source code was first downloaded, and pull the new code.

Deplasați-vă în directorul corespunzător de compilare și rulați din nou cmake (deoarece cmake actualizează datele versiunii de versiune pentru meniul Ajutor, ... despre FreeCAD), cu toate acestea nu trebuie să adăugați calea la codul sursă după "cmake", doar un spațiu și un punct:

To use all CPU cores for compilation use

Legături utile
Vezi și Compiling - Speeding up Cum se poate grăbi o compilare