Компиляция в Linux

From FreeCAD Documentation
Revision as of 00:17, 26 July 2021 by NataliS (talk | contribs)
Существует экспериментальный контейнер FreeCAD Docker, который протестирован для разработки FreeCAD. Подробнее на странице Компиляция в Docker

Обзор

В последних дистрибутивах Linux, FreeCAD, как правило, собирается легко, поскольку все зависимости обычно предоставляются менеджером пакетов. В основном сборка включает 3 этапа:

  1. Получение исходного кода FreeCAD.
  2. Получение зависимостей, или пакетов, от которых зависит FreeCAD
  3. Настройка с помощью cmake и компиляция с помощью make.

Ниже вы найдете подробное описание процесса сборки, некоторых скриптов компиляции и особенностей, с которыми Вы можете столкнуться. Если вы найдете ошибки, устаревшие сведения (дистрибутивы Linux меняются быстро), или если вы используете дистрибутив, которого нет в списке, обсудите вопрос на форуме, и помогите нам исправить это.

Общий рабочий процесс для компиляции FreeCAD из исходников. В систем должны быть как сторонние зависимости, так и исходные коды самого FreeCAD. CMake конфигурирует систему так чтобы весь проект скомпилировался одной инструкцией make.

Получение исходных кодов

Git

Лучший способ получить код это клонировать только-для-чтения репозиторий Git. Для этого вам потребуется программа git, которую легко установить в большинстве дистрибутивов Linux, или получить на официальном веб-сайте.

Git может быть установлен с помощью этой команды:

sudo apt install git

Ниже указанная команда, копирует последнюю версию исходного кода FreeCAD в папку freecad-source.

git clone https://github.com/FreeCAD/FreeCAD.git freecad-source

Для получения дополнительной информации об использовании Git и внесении кода в проект, посмотрите управление исходным кодом.

Архив с исходным кодом

Кроме того, вы можете загрузить исходники непосредственно с GitHub, в качестве .zip или .tar.gz архива, и распаковать его в заданный каталог.

Установка зависимостей (Dependencies)

Для компиляции FreeCAD необходимо установить требуемые зависимости (dependencies), упомянутые в сторонних библиотеках; пакеты, содержащие эти зависимости для различных дистрибутивов Linux, перечислены ниже. Обратите внимание, что имена и доступность библиотек будут зависеть от вашего конкретного дистрибутива; если ваш дистрибутив устарел, некоторые пакеты могут быть недоступны или иметь другое имя. В этом случае посмотрите раздел ↓ старые и нестандартные дистрибутивы расположенный ниже.

Как только у вас будут установлены все зависимости, приступайте к сборке FreeCAD.

Обратите внимание, что размер исходного кода FreeCAD составляет около 500 МБ; он может быть в три раза больше, если вы клонируете репозиторий Git со всей историей его изменений. Для получения всех зависимостей может потребоваться загрузка 500 МБ или более новых файлов; при распаковке этих файлов может потребоваться 1500 МБ или более места. Также имейте в виду, что в процессе компиляции может быть создано до 1500 МБ дополнительных файлов, поскольку система копирует и изменяет весь исходный код. Поэтому при попытке компиляции убедитесь, что на вашем жестком диске достаточно свободного места, по крайней мере, не менее 4 ГБ.

Debian и Ubuntu

В системах основанных на Debian (Debian, Ubuntu, Mint, и т.п.) довольно легко установить все необходимые зависимости. Большинство библиотек доступны через apt или менеджер пакетов Synaptic.

Если вы уже установили FreeCAD из официальных репозиториев, вы можете установить зависимости (dependencies) для его сборки с помощью этой единственной строки кода в терминале:

sudo apt build-dep freecad

Однако, если версия FreeCAD в репозиториях старая, зависимости (dependencies) могут быть уже устаревшими для компиляции последней версии FreeCAD. Поэтому, пожалуйста, убедитесь, что вы установили следующие пакеты.

Эти пакеты необходимы для успешной компиляции в целом:

  • build-essential, устанавливает компиляторы C и C++ , библиотеки разработки C и make утилиту.
  • cmake, необходимый инструмент для настройки исходников FreeCAD. Вы также можете установить cmake-gui и cmake-curses-gui чтобы иметь графический интерфейс для данной утилиты.
  • libtool, необходимые инструменты для создания shared библиотек.
  • lsb-release, стандартная утилита базовой отчетности обычно уже установлена в системе Debian и позволяет программно различать чистую установку Debian или ее вариант, такой как Ubuntu или Linux Mint. Не удаляйте этот пакет, так как от него могут зависеть многие другие системные пакеты.

При компиляции FreeCAD используется язык Python, и он также используется в runtime в качестве языка сценариев. Если вы используете дистрибутив на основе Debian, интерпретатор Python как правило уже установлен в нем.

  • python3
  • swig, это инструмент, который создает интерфейсы между кодом C++ и Python.

Пожалуйста, убедитесь, что у вас установлен Python 3. Python 2 устарел в 2019 году, свежая разработка FreeCAD не тестируется с этой версией языка.

Boost библиотеки должны быть обязательно установлены:

  • libboost-dev
  • libboost-date-time-dev
  • libboost-filesystem-dev
  • libboost-graph-dev
  • libboost-iostreams-dev
  • libboost-program-options-dev
  • libboost-python-dev
  • libboost-regex-dev
  • libboost-serialization-dev
  • libboost-thread-dev

Должны быть установлены Coin библиотеки:

  • libcoin80-dev, для Debian Jessie, Stretch, Ubuntu с 16.04 до 18.10, или
  • libcoin-dev, для Debian Buster, Ubuntu 19.04 и выше, а так же Ubuntu 18.04/18.10 вместе с freecad-stable/freecad-daily PPAs должны быть добавлены в иходники.

Несколько библиотек, которые занимаются вычислениями, триангулированными поверхностями, сортировкой, мешами (meshes), компьютерным зрением, картографическими проекциями, 3D-визуализацией, оконной системой X11, парсингом XML и чтением Zip-файлов:

  • libeigen3-dev
  • libgts-bin
  • libgts-dev
  • libkdtree++-dev
  • libmedc-dev
  • libopencv-dev or libcv-dev
  • libproj-dev
  • libvtk7-dev or libvtk6-dev
  • libx11-dev
  • libxerces-c-dev
  • libzipios++-dev

Python 2 и Qt4

Python 2 и Qt4 уже устарели и не рекомендуются к применению. Начиная с версии 0.20, в FreeCAD они больше не поддерживаются.

При компиляции FreeCAD в Debian Jessie, Stretch, Ubuntu 16.04, используйте Python 2 и Qt4, установив следующие зависимости:

  • qt4-dev-tools
  • libqt4-dev
  • libqt4-opengl-dev
  • libqtwebkit-dev
  • libshiboken-dev
  • libpyside-dev
  • pyside-tools
  • python-dev
  • python-matplotlib
  • python-pivy
  • python-ply
  • python-pyside

Python 3 и Qt5

При компиляции FreeCAD в Debian Buster, Ubuntu 19.04 и выше, а также Ubuntu 18.04/18.10 с freecad-stable/freecad-daily PPAs добавленным в ваш исходный код, установите следующие зависимости.

  • qtbase5-dev
  • qttools5-dev
  • qt5-default (if compiling 0.20 on a machine that still has Qt4)
  • libqt5opengl5-dev
  • libqt5svg5-dev
  • libqt5webkit5-dev or qtwebengine5-dev
  • libqt5xmlpatterns5-dev
  • libqt5x11extras5-dev
  • libpyside2-dev
  • libshiboken2-dev
  • pyside2-tools
  • pyqt5-dev-tools
  • python3-dev
  • python3-matplotlib
  • python3-pivy
  • python3-ply
  • python3-pyside2.qtcore
  • python3-pyside2.qtgui
  • python3-pyside2.qtsvg
  • python3-pyside2.qtwidgets
  • python3-pyside2uic

Ядро OpenCascade

Ядро OpenCascade - это основная графическая библиотека для создания 3D-фигур. Она существует в виде официальной версии OCCT и виде версии для сообщества OCE. Версия для сообщества к применению больше не рекомендуется, так как она устарела.

Для Debian Buster и Ubuntu 18.10 и выше, а так же для Ubuntu 18.04 с freecad-stable/freecad-daily PPAs добавлеными в ваши исходники, установите официальные пакеты.

  • libocct*-dev
    • libocct-data-exchange-dev
    • libocct-draw-dev
    • libocct-foundation-dev
    • libocct-modeling-algorithms-dev
    • libocct-modeling-data-dev
    • libocct-ocaf-dev
    • libocct-visualization-dev
  • occt-draw

Для Debian Jessie, Stretch, Ubuntu 16.04 и выше, установите community edition пакеты.

  • liboce*-dev
    • liboce-foundation-dev
    • liboce-modeling-dev
    • liboce-ocaf-dev
    • liboce-ocaf-lite-dev
    • liboce-visualization-dev
  • oce-draw

Вы можете установить библиотеки по отдельности или сразу несколько с похожим именами используя символ звездочку '*'. Замените occ на oce если вы хотите установить community редакцию библиотек.

sudo apt install libocct*-dev

Необязательные к установке пакеты

При желании вы также можете установить эти дополнительные пакеты:

  • libsimage-dev, чтобы Coin поддерживал дополнительные форматы файлов изображений.
  • doxygen и libcoin-doc (или libcoin80-doc для старых систем), если вы хотите автоматический генерировать документацию к исходному коду.
  • libspnav-dev, для поддержки устройств 3D ввода, таких как 3Dconnexion "Space Navigator" или "Space Pilot".
  • checkinstall, если вы хотите зарегистрировать установленные файлы в диспетчере пакетов вашей системы, чтобы вы могли удалить их позже.

Устаовка Python 3 и Qt5 одной командой

Требуется, чтобы Pyside2 был доступен в Debian buster и freecad-stable/freecad-daily PPAs.

sudo apt install cmake cmake-gui libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside2-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libshiboken2-dev libspnav-dev libvtk7-dev libx11-dev libxerces-c-dev libzipios++-dev occt-draw pyside2-tools python3-dev python3-matplotlib python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2uic qtbase5-dev qttools5-dev swig

ПРИМЕЧАНИЕ: В некоторых версиях Ubuntu и некоторых версиях Qt вы получите сообщение об ошибке, что python3-pyside2uic не может быть найден-в этих системах вы можете безопасно опустить его. В Ubuntu 20.04 вам нужно будет добавить pyqt5-dev-инструменты . Более подробную информацию можно найти в это обсуждение на форуме.

Установка Python 2 и Qt4 одной коммандой

Это не рекомендуется для более новых установок, поскольку и Python 2 и Qt4 являются устаревшими.

sudo apt install cmake debhelper dh-exec dh-python libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin80-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libshiboken-dev libspnav-dev libvtk6-dev libx11-dev libxerces-c-dev libzipios++-dev lsb-release occt-draw pyside-tools python-dev python-matplotlib python-pivy python-ply swig

Пользователи Ubuntu 16.04, пожалуйста, ознакомьтесь также с обсуждением компиляции на форуме: Компиляция в Linux (Kubuntu): CMake не может найти VTK.

Raspberry Pi

Выполните те же действия, что и в Debian и Ubuntu.

Сообщалось о проблемах при попытке компиляции в Raspbian с Python 3 и Qt5, но комбинация Python 3 и Qt4, похоже, работает для более старых версий FreeCAD.

Для более новых версий FreeCAD компиляция с Py3/Qt5 проходит успешно, если установлена операционная система Ubuntu 20.04.

Из-за различных проблем с Qt в этой версии обычные инструменты PySide не будут найдены.

E: Unable to locate package python3-pyside2uic

В этом случае мы можем установить пакеты из PyQt и создать символические ссылки на необходимые инструменты.

sudo apt-get install pyqt5-dev
sudo apt-get install pyqt5-dev-tools
cd /usr/bin/
ln -s pyrcc5 pyside2-rcc
ln -s pyuic5 pyside2-uic

Теперь компиляция может быть продолжена.

cd freecad-build/
cmake ../freecad-source -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DUSE_PYBIND11=ON
make -j2

Параметр -j для создания не должен превышать 3, поскольку Raspberry Pi имеет ограниченную память. На компиляцию уйдет несколько часов, поэтому лучше сделать это за ночь.

Дополнительная информация, FreeCAD и Raspberry Pi 4.

Fedora

Вам нужны следующие пакеты :

  • 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
  • qt5-qtxmlpatterns
  • qt5-qttools-static
  • ode-devel
  • xerces-c
  • xerces-c-devel
  • opencv-devel
  • smesh-devel
  • Coin3
  • Coin3-devel

(Монету не путать с монетой - это финансовый пкг. Апрель 2021, Coin4 и Coin4-devel доступны ) (если coin2 является последней доступной версией для вашей версии Fedora, используйте пакеты из http://www.zultron.com/rpm-repo/)

  • SoQt-devel
  • freetype
  • freetype-devel
  • vtk
  • med
  • med-devel

И дополнительно :


  • libspnav-devel (для поддержки устройств 3Dconnexion, вроде Space Navigator или Space Pilot)
  • pivy ( https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy не обязателен, но нужен для модуля Draft)

Gentoo

Простейший путь проверить, какие пакеты нужны для компиляции FreeCAD это проверить через portage:

emerge -pv freecad

Вы получите список дополнительных пакетов, которые следует установить на Вашей системе.

Если FreeCAD недоступен в portage, он доступен в оверлее waebbl. Система отслеживания ошибок на оверлее waebbl Github может помочь решить некоторые проблемы, с которыми вы можете столкнуться. Оверлей предоставляет freecad-9999 </ tt>, который вы можете выбрать для компиляции или просто использовать для получения зависимостей.

layman -a waebbl

openSUSE

Tumbleweed

Следующие команды установят пакеты, необходимые для создания FreeCAD с Qt5 и Python 3.

zypper in --no-recommends -t pattern devel_C_C++ devel_qt5

zypper in libqt5-qtbase-devel libqt5-qtsvg-devel libqt5-qttools-devel boost-devel swig libboost_program_options-devel libboost_mpi_python3-devel libboost_system-devel libboost_program_options-devel libboost_regex-devel libboost_python3-devel libboost_thread-devel libboost_system-devel libboost_headers-devel libboost_graph-devel python3 python3-devel python3-matplotlib python3-matplotlib-qt5 python3-pyside2 python3-pyside2-devel python3-pivy gcc gcc-fortran cmake occt-devel libXi-devel opencv-devel libxerces-c-devel Coin-devel SoQt-devel freetype2-devel eigen3-devel libode6 vtk-devel libmed-devel hdf5-openmpi-devel openmpi2-devel netgen-devel freeglut-devel libspnav-devel f2c doxygen dos2unix glew-devel

Следующая команда установит Qt Creator и отладчик проекта GNU.

zypper in libqt5-creator gdb

Если какие-либо пакеты отсутствуют, вы можете проверить Tumbleweed [1] "FreeCAD.spec" файл на [2] Откройте Службу сборки.

Также, проверьте, есть ли какие-либо исправления, которые вам необходимо использовать (например 0001-find-openmpi2-include-files.patch).

Leap

Если есть разница между доступными пакетами на Tumbleweed и Leap, то вы можете прочитать Leap [3] файл "FreeCAD.spec" на [4] Откройте службу сборки, чтобы определить необходимые пакеты.

Смотрите piano_jonas unofficial "Compile On openSUSE" guide.

Arch Linux

Вам понадобятся следующие библиотеки из официальных архивов:

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

Older and non-conventional distributions

В других дистрибутивах у нас очень мало отзывов от пользователей, поэтому может быть сложнее найти необходимые пакеты.

Сначала попробуйте найти необходимые библиотеки, упомянутые в сторонних библиотеках, в диспетчере пакетов. Имейте в виду, что у некоторых из них может быть немного другое имя пакета; поиск по имени, а также по имени libname, name-dev, name-devel и аналогичному. Если это невозможно, попробуйте скомпилировать эти библиотеки самостоятельно.

Для FreeCAD требуется версия компилятора GNU g++, равная или выше 3.0.0, так как FreeCAD в основном написан на C++. Во время компиляции выполняются некоторые сценарии Python, поэтому интерпретатор Python должен работать должным образом. Чтобы избежать каких-либо проблем с компоновщиком, также рекомендуется указывать пути к библиотекам в LD_LIBRARY_PATH или в файле ld.so.conf. Это уже сделано в современных дистрибутивах Linux, но, возможно, потребуется установить в более старых.

Pivy

Pivy (обертки Python для Coin3d) не требуется для сборки FreeCAD или его запуска, но он необходим в качестве зависимости от среды выполнения для рабочего стола проекта. Если вы не собираетесь использовать эти инструментальные средства, вам не понадобится Pivy. Однако обратите внимание, что рабочий стол проекта используется внутри других рабочих столов, таких как Arch и BIM, поэтому для использования этих инструментальных средств также необходимо установить Pivy.

К ноябрю 2015 года устаревшая версия Pivy, включенная в исходный код FreeCAD, больше не будет компилироваться во многих системах. Это не большая проблема, так как обычно вы должны получить Pivy от менеджера пакетов вашего дистрибутива; если вы не можете найти Pivy, вам, возможно, придется скомпилировать его самостоятельно, см. Инструкции по компиляции Pivy.

Debug symbols

Для устранения неполадок в FreeCAD полезно иметь отладочные символы важных библиотек зависимостей, таких как Qt. Для этого попробуйте установить пакеты зависимостей, которые заканчиваются на -dbg, -dbgsym, -debuginfo или аналогичные, в зависимости от вашего дистрибутива Linux.

Для Ubuntu вам, возможно, придется включить специальные репозитории, чтобы иметь возможность просматривать и устанавливать эти отладочные пакеты с помощью диспетчера пакетов. См.Debug Symbol Packages для получения дополнительной информации.

Сборка FreeCAD

Compiling against Python 2 and Qt4 is no longer well supported, and as of 0.20 is no longer supported at all. You should compile against Python 3 and Qt5. 0.20 requires at least Python3.6 and Qt 5.9.

FreeCAD использует CMake в качестве основной системы сборки, она доступна во всех основных операционных системах. Компиляция с помощью CMake обычно очень проста и происходит в два этапа.

  1. CMake checks that every needed program and library is present on your system, and generates a Makefile that is configured 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 is done with the program make, which generates the FreeCAD executables.

Since FreeCAD is a large application, compiling the entire source code can take anywhere from 10 minutes to one hour, depending on your CPU and the number of CPU cores used for compilation.

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

Сборка вне папки исходников

Building in a separate folder is more convenient than building in the same directory where the source code is located as every time you update the source code CMake can intelligently determine which files have changed, and recompile only what is needed. This is very useful when testing different Git branches as you don't confuse the build system.

To build out-of-source, simply create a build directory, freecad-build, distinct from your FreeCAD source folder, freecad-source; then from this build directory point cmake to the right source folder. You can use cmake-gui or ccmake instead of cmake in the instructions below as well. Once cmake finishes configuring the environment, use make to start the actual compilation.

mkdir freecad-build
cd freecad-build
cmake ../freecad-source
make -j$(nproc --ignore=2)

Note: if you are compiling the 0.19 release branch, you must explicitly specify that you are compiling with Qt5 and Python 3 -- replace the cMake command above with:

cmake ../freecad-source -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3

The -j option of make controls how many jobs (files) are compiled in parallel. The nproc program prints the number of CPU cores in your system; by using it together with the -j option you can choose to process as many files as you have cores, in order to speed up overall compilation of the program. In the example above, it will use all cores in your system except two; this will keep your computer responsive for other uses while compilation proceeds in the background. The FreeCAD executable will eventually appear in the freecad-build/bin directory. See also Compiling (speeding up) to improve compilation speed.

Сборка в папке исходников

In-source builds are fine if you want to compile a version of FreeCAD quickly, and don't intend to update the source code often. In this case, you can remove the compiled program and the source just by deleting a single folder.

Change to the source directory, and point cmake to the present directory (denoted by a single point):

cd freecad-source
cmake . -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3
make -j$(nproc --ignore=2)

Исполняемый файл FreeCAD будет находиться в каталоге freecad-source/bin

Как восстановить папку с исходными кодами

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

> .gitignore
git clean -df
git reset --hard HEAD

Первая строка очищает файл .gitignore. Это гарантирует, что следующие команды clean и reset будут влиять на все в каталоге и не будут игнорировать элементы, соответствующие выражениям в .gitignore. Вторая строка удаляет все файлы и каталоги, которые не отслеживаются репозиторием git, затем последняя команда сбрасывает все изменения в отслеживаемых файлах, включая первую команду, которая очистила файл .gitignore.

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

Конфигурирование

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

cmake -D <var>:<type>=<value> $SOURCE_DIR

Where $SOURCE_DIR is the directory that contains the source code. The <type> may be omitted in most cases. The space after the -D option may also be omitted.

For example, to avoid building the FEM Workbench:

cmake -D BUILD_FEM:BOOL=OFF ../freecad-source
cmake -DBUILD_FEM=OFF ../freecad-source

All possible variables are listed in the InitializeFreeCADBuildOptions.cmake file, located in the cMake/FreeCAD_Helpers directory. In this file, search for the word option to get to the variables that can be set, and see their default values.

# ==============================================================================
# =================   All the options for the build process    =================
# ==============================================================================

option(BUILD_FORCE_DIRECTORY "The build directory must be different to the source directory." OFF)
option(BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON)
option(FREECAD_USE_EXTERNAL_ZIPIOS "Use system installed zipios++ instead of the bundled." OFF)
option(FREECAD_USE_EXTERNAL_SMESH "Use system installed smesh instead of the bundled." OFF)
...

Alternatively, use the command cmake -LH to list the current configuration, and thus all variables that can be changed. You may also install and use cmake-gui to launch a graphical interface showing all the variables that can be modified. In the next sections we list some of the more relevant options that you may want to use.

Для Debug сборки

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

cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Debug ../freecad-source

Для Release сборки

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

cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Release ../freecad-source

Сборка на основе Python 3 и Qt5

By default, FreeCAD 0.19 and earlier build for Python 2 and Qt4. Since these two packages are obsolete, it is better to build for Python 3 and Qt5. Support for Python 2 and Qt4 has been removed in FreeCAD 0.20 and it is not necessary to explicitly enable Qt5 and Python 3 if compiling the latest development versions.

In a modern Linux distribution you only need to provide two variables specifying the use of Qt5, and the path to the Python interpreter.

Для 0.19:

cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source

Для 0.20_dev:

cmake ../freecad-source

Note that when switching between 0.19 and the 0.20 builds, it may be necessary to delete CMakeCache.txt prior to running cmake.

Сборка с применением особых версий Python

If the default python executable in your system is a symbolic link to Python 2, cmake will try to configure FreeCAD for this version. You can choose another version of Python by giving the path to a specific executable:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source

If that doesn't work, you may have to define additional variables pointing to the desired Python libraries and include directories:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
    -DPYTHON_PACKAGES_PATH=/usr/lib/python3.6/site-packages/ \
    ../freecad-source

It is possible to have several independent versions of Python in the same system, so the locations and version numbers of your Python files will depend on your particular Linux distribution. Use python3 -V to display the version of Python that you are using currently; only the first two numbers are necessary; for example, if the result is Python 3.6.8, 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 locate command.

locate python3.6

You may use python3 -m site in a terminal to determine the site-packages directory, or dist-packages for Debian systems.

Сборка в Qt Creator на основе Python 3 и Qt5

1. Запустите Qt Creator.

2. Кликните на Open Project.

3. Navigate to the directory where the source code is, freecad-source/, and choose the topmost CMakeLists.txt file.

4. By selecting the file, it will automatically run cmake on it, but it may fail if the appropriate options aren't correctly set.

5. Go to Projects → Build & Run → Imported Kit → Build → Build Settings → CMake. Set the appropriate build directory, freecad-build/.

6. Set the appropriate variables in the Key-Value dialog, of types String and Bool.

PYTHON_EXECUTABLE=/usr/bin/python3
BUILD_QT5=ON

7. If the variables do not load the project correctly, you may have to go to Projects → Manage Kits → Kits → Default (or Imported Kit or similar) → CMake Configuration. Then press Change, and add the appropriate configuration as described above. You may have to add more variables about the Python paths, if the system Python is not found.

PYTHON_EXECUTABLE:STRING=/usr/bin/python3.7
PYTHON_INCLUDE_DIR:STRING=/usr/include/python3.7m
PYTHON_LIBRARY:STRING=/usr/lib/x86_64-linux-gnu/libpython3.7m.so
PYTHON_PACKAGES_PATH:STRING=/usr/lib/python3.7/site-packages
BUILD_QT5:BOOL=ON

7.1. Press Apply, then OK.

7.2. Make sure the rest of the options are correctly set, for example, Qt version should be a present version installed in the system, like Qt 5.9.5 in PATH (qt5).

Press Apply, then OK to close the configuration.

The cmake program should run automatically again, and it should fill the entire Key-Value dialog with all the variables that can be configured.

8. Go to Projects → Build & Run → Imported Kit → Run → Run Settings → Run → Run Configuration and choose FreeCADMain to compile the graphical version of FreeCAD, or FreeCADMainCMD to compile only the command line version.

9. Finally, go to the menu Build → Build Project "FreeCAD". If this is a new compilation, it should take several minutes, inclusive hours, depending on the number of processors that you have available.

Плагин Qt designer

Если Вы хотите разрабатывать Qt-код для FreeCAD, Вам понадобится плагин к Qt Designer, который обеспечивает все пользовательские виджеты FreeCAD.

Go into an auxiliary directory of the source code, the run qmake with the indicated project file to create a Makefile; then run make to compile the plugin.

cd freecad-source/src/Tools/plugins/widget
qmake plugin.pro
make

If you are compiling for Qt5, make sure the qmake binary is the one for this version, so that the resulting Makefile contains the necessary information for Qt5.

cd freecad-source/src/Tools/plugins/widget
$QT_DIR/bin/qmake plugin.pro
make

where $QT_DIR is the directory that stores Qt binary libraries, for example, /usr/lib/x86_64-linux-gnu/qt5.

The library created is libFreeCAD_widgets.so, which needs to be copied to $QT_DIR/plugins/designer.

sudo cp libFreeCAD_widgets.so $QT_DIR/plugins/designer

Внешний или встроенный 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 -DFREECAD_USE_EXTERNAL_PIVY=1.

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.

Дополнительная документация

The source code of FreeCAD is very extensive, and with CMake it's possible to configure many options. Learning to use CMake fully may be useful to choose the right options for your particular needs.

Создание пакета debian

Если Вы планируете собрать пакет Debian вне исходников, вам следует сначала установить следующие пакеты:

sudo apt install dh-make devscripts lintian

Перейдите в папку FreeCAD и выполните

debuild

Когда пакет построен, Вы можете использовать lintian для проверки, содержит ли пакет ошибки

lintian freecad-package.deb

Обновление исходного кода

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:

cd freecad-source
git pull

Then move into the build directory where the code was compiled initially, and run cmake specifying the present directory (denoted by a dot); then trigger the re-compilation with make.

cd ../freecad-build
cmake .
make -j$(nproc --ignore=2)

Разрешение проблем

Примечание для 64-битных систем

При компиляции FreeCAD на 64-бит известна проблема с 64-битным пакетом OpenCASCADE. Чтобы FreeCAD правильно заработал, Вам нужно запустить скрипт configure и установить дополнительно CXXFLAGS:

./configure CXXFLAGS="-D_OCC64"

For Debian based systems this option is not needed when using the pre-built OpenCASCADE packages because these ones set the proper CXXFLAGS internally.

Скрипты автоматической компиляции

Это всё, что Вам нужно для полной компиляции FreeCAD. Это односкриптовое решение, работающее на свежеустановленном дистрибутиве. Команда запросит пароль root для установки пакетов новых онлайновых репозиториев. Эти скрипты должны запускаться на 32- и 64-битных версиях. Они написаны для разных версий, но, скорее всего, будут работать для позднейший версий с небольшими изменениями или без них.

If you have such a script for your preferred distribution, please discuss it on the FreeCAD forum so we can incorporate it.

Ubuntu

Эти скрипты обеспечивают надёжный путь для установки верного набора зависимостей, требуемых для сборки и запуска FreeCAD в Ubuntu. Они используют репозитории PPA Ubuntu FreeCAD, и должны работать на любой версии Ubuntu, для которой есть целевой PPA. PPA на freecad-daily нацелен на последнюю версию Ubuntu, а 'стабильный' PPA нацелен на официально поддерживаемые версии Ubuntu.

This script installs the daily compiled snapshot of FreeCAD and its dependencies. It adds the daily repository, gets the dependencies to build this version, and installs the required packages. Afterwards it proceeds to pull the source code into a particular directory, creates a build directory and changes into it, configures the compilation environment with cmake, and finally builds the entire program with make. Save the script to a file, make it executable, and run it, but don't use sudo; superuser privileges will be asked only for selected commands.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-daily && sudo apt-get update
sudo apt-get build-dep freecad-daily
sudo apt-get install freecad-daily

git clone https://github.com/FreeCAD/FreeCAD.git freecad-source
mkdir freecad-build
cd freecad-build
cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DFREECAD_USE_PYBIND11=ON ../freecad-source
make -j$(nproc --ignore=2)

If you wish, you can uninstall the pre-compiled version of FreeCAD (freecad-daily) while leaving the dependencies in place, however, leaving this package installed will allow the package manager to keep its dependencies up to date as well; this is mostly useful if you intend to follow the development of FreeCAD, and constantly update and compile the sources from the Git repository.

The previous script assumes that you want to compile the latest version of FreeCAD, so you are using the "daily" repository to get the dependencies. However, you can instead get the build dependencies of the "stable" version for your current Ubuntu release. If this is the case, replace the top part of the previous script with the following instructions. For Ubuntu 12.04, omit --enable-source from the command.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-stable && sudo apt-get update
sudo apt-get build-dep freecad
sudo apt-get install freecad

Once you install the freecad package from the freecad-stable repository, it will supersede the FreeCAD executable that is available from the Universe Ubuntu repository. The executable will be named simply freecad, and not freecad-stable.

openSUSE

No external Repositories are needed to compile FreeCAD. However, there is an imcompatability with python3-devel which needs to be removed. FreeCAD can be compiled from GIT

# install needed packages for development
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git swig
 
# create new dir, and go into it
mkdir FreeCAD-Compiled 
cd FreeCAD-Compiled
 
# get the source
git clone https://github.com/FreeCAD/FreeCAD.git free-cad
 
# Now you will have a subfolder in this location called free-cad. It contains the source
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build1
cd FreeCAD-Build1 
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

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

# go into free-cad dir created earlier
cd free-cad
 
# pull
git pull
 
# get back to previous dir
cd ..
 
# Now repeat last few steps from before.
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build2
cd FreeCAD-Build2
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Debian Squeeze

# get the needed tools and libs
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake gfortran
 
# checkout the latest source
git clone https://github.com/FreeCAD/FreeCAD.git freecad
 
# go to source dir
cd freecad
 
# build configuration 
cmake .
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Fedora 27/28/29

Posted by user [PrzemoF] in the forum.

#!/bin/bash

ARCH=$(arch)

MAIN_DIR=FreeCAD
BUILD_DIR=build

#FEDORA_VERSION=27
#FEDORA_VERSION=28
FEDORA_VERSION=29

PACKAGES="gcc cmake gcc-c++ boost-devel zlib-devel swig eigen3 qt-devel \
shiboken shiboken-devel pyside-tools python-pyside python-pyside-devel xerces-c \
xerces-c-devel OCE-devel smesh graphviz python-pivy python-matplotlib tbb-devel \
 freeimage-devel Coin3 Coin3-devel med-devel vtk-devel"

FEDORA_29_PACKAGES="boost-python2 boost-python3 boost-python2-devel boost-python3-devel"

if [ "$FEDORA_VERSION" = "29" ]; then
    PACKAGES="$PACKAGES $FEDORA_29_PACKAGES"
fi

echo "Installing packages required to build FreeCAD"
sudo dnf -y install $PACKAGES
cd ~
mkdir $MAIN_DIR || { echo "~/$MAIN_DIR already exist. Quitting.."; exit; }
cd $MAIN_DIR
git clone https://github.com/FreeCAD/FreeCAD.git
mkdir $BUILD_DIR || { echo "~/$BUILD_DIR already exist. Quitting.."; exit; }
cd $BUILD_DIR
cmake ../FreeCAD 
make -j$(nproc)

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. mkdir git. Optionally change directory eg. cd git.
  2. Clone the AUR repository : git clone http://aur.archlinux.org/packages/freecad-git
  3. Enter AUR repository folder : cd freecad-git
  4. Compile using Arch makepkg : makepkg -s. The -s or --syncdeps flag will also install required dependencies.
  5. Install created package : makepkg --install 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 git checkout -f inside the folder.