CompileOnUnix/ru

В свежих дистрибутивах linux,собрать FreeCAD как правило легко, так как обычно все зависимости предоставляются менеджерам пакетов. В принципе, вам просто нужно получить исходники FreeCAD, а затем удовлетворить все зависимости перечисленные ниже, затем введите: ./autogen.sh && ./configure && make или ./cmake. && make чтобы получить собраный FreeCAD, в зависимости от требований собираемой системы используются (autotools либо cmake). Ниже вы найдете подробное описание всего процесса и тех затруднений которые могут возникнуть. Перед тем как вы с головой уйдете в детали, помните что также есть shellscript который вы можете использовать. Если вы найдёте ошибки в нем или в тексте ниже, пожалуйста помогите нам исправить их.

Git
Быстрейший способ получить исходники, это клонировать git репозиторий доступный только для чтения:

git clone git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad (read-only) cd REPONAME

В первый раз когда вы попытаетесь подключиться к хосту free-cad.git.sourceforge.net, вы увидете сообщение похожее на то что представлено ниже:

The authenticity of host 'free-cad.git.sourceforge.net (216.34.181.91)' can't be established. RSA key fingerprint is 86:7b:1b:12:85:35:8a:b7:98:b6:d2:97:5e:96:58:1d. Are you sure you want to continue connecting (yes/no)?

Before typing 'yes' to accept the host fingerprint, ensure the fingerprint is correct for the host. You can find a listing of SSH host keys in the SSH Host Key Fingerprints list. If you receive a host key warning, please contact the SourceForge.net team.

Subversion
Перед тем как собирать FreeCAD, вы должны получить исходный код. С начало установите subversion.Затем, в папке на ваш выбор (для примера в вашей домашней папке), введите: svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad Это позволит выполнять анонимные проверки текущей версии разрабатываемой версии в новой папке с именем "freecad". В качестве альтернативы вы можете скачать source tarball однако они могут быть уже совсем старыми, вероятно, лучше получить самую свежую версию с помощью системы контроля версий. Заметим, всё же, subversion это версия FreeCAD разрабатываемая в настоящее время, и она может содержать ошибки или даже не в состоянии скомпилироваться.

Требования
Для компиляции FreeCAD под Linux у вас должны быть установлены все библиотеки, перечисленные в Third Party Libraries. Вам также понадобится компилятор GNU gcc не ниже версии 3.0.0. g++ также необходим потомучто FreeCAD полностью написан на C++. Оба gcc и g++ включены в build-essential пакет описанный ниже. При компиляции будут использоваться несколько Python сценариев. Так что итерпритатор Python должен работать правильно.

Во избежания проблем во время сборки, хорошей идеей будет, чтобы путик к библиотекам были прописаны либо в переменной LD_LIBRARY_PATH или в файле ld.so.conf. Как правило это уже учтено в современных дистрибутивах.

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

Debian/Ubuntu и большинство современных дистрибутивов
В системах, основанных на дистрибутиве Debian, довольно легко установить все необходимые зависимости. Большинство библиотек доступны через менеджеры пакетов apt-get или synaptic. Ниже перечислены все пакеты, которые необходимо установить. В других дистрибутивах имена пакетов могут отличаться, но обычно вы тоже сможете все их найти: build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev (or libxerces28-dev depending on your system) 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 libboost-thread-dev libqt4-dev qt4-dev-tools python2.5-dev (or higher version if available) libopencascade-dev libf2c2-dev gfortran libeigen3-dev libqtwebkit-dev

Чтобы установить все эти библиотеки в один шаг, просто скопируйте следующий текст в терминал (только для Debian / Ubuntu систем): sudo aptitude 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 libopencascade-dev

при желании вы также можете установить libsimage-dev (to make Coin to support additinal image file formats) checkinstall (to register your installed files into your system's package manager, so yo can easily uninstall later) python-pivy (needed for the 2D Drafting module) python-qt4 (needed for the 2D Drafting module) doxygen и libcoin60-doc (если вы собираетесь генерировать документацию к исходному коду)

Fedora
Сборка & установка FreeCAD в Fedora 13, некоторые необходимые советы и приемы:
 * Установить кучу необходимых пакетов, большинство из них доступны в репозиториях Fedora 13
 * Загрузите и собирите xerces
 * Загрузите и собирите OpenCascade. Нужно отметить его в xmu: ./configure --with-xmu-include=/usr/include/X11/Xmu --with-xmu-library=/usr/lib
 * Загрузите и собирите Pivy. Вам придется удалить две ссылки на несуществующий файл "SoQtSpaceball.h" из pivy/interfaces/soqt.i Закоментите эти две строчки это позволит собрать & установить пакет.
 * Сконфигурируйте Freecad. Нужно отметить его в нескольких местах: ./configure --with-qt4-include=/usr/include --with-qt4-bin=/usr/lib/qt4/bin --with-occ-lib=/usr/local/lib --with-occ-include=/usr/local/inc --with-xercesc-lib=/usr/local/lib
 * make - возникает проблема при сборке, потому что ldflags для soqt установлен в "-LNONE" что заставляет libtool блевать(barf). Мой обход этой проблемы заключается в изменении /usr/lib/Coin2/conf/soqt-default.cfg чтобы ldflags стал "" вместо "-LNONE". После этого -> Заработало !
 * make install

Старые и нетрадиционные дистрибутивы
В старых дистрибутивах вы можете не найти необходимые библиотеки:

OpenCASCADE
Не все дистрибутивы Linux имеют официальный пакет OpenCASCADE в своем репозитории. Вы должны сами проверить, доступенли этот пакет для вашего дистрибутива. По крайне мере Debian Lenny и Ubuntu Intrepid предоставляют официальный .deb пакет. Для старых релизов Debian или Ubuntu вы можете получить неофициальные пакеты отсюда. Чтобы собрать свой собственный .deb пакет выполните следующие действия:

wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.diff.gz

dpkg-source -x opencascade_6.2.0-7.dsc

sudo apt-get install build-essential devscripts debhelper autoconf automake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-dev libglu1-mesa-dev java-gcj-compat-dev libxmu-dev
 * 1) Install OCC build-deps

cd opencascade-6.2.0 ; debuild
 * 1) Build Opencascade packages. This takes hours and requires
 * 2) at least 8 GB of free disk space

sudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deb libopencascade6.2-dev_6.2.0-7_i386.deb
 * 1) Install the resulting library debs

Также вы можете загрузить и скомпилировать последнюю версию с opencascade.org:

Устанавливая пакет, следует помнить что программа установки написана на java которая требует официального runtime edition от Sun (называется пакет: sun-java6-jre), не с открытым исходным кодом Java (gij), поставляется с Ubuntu. Установите его, если необходимо: sudo apt-get remove gij sudo apt-get install sun-java6-jre Будьте осторожны если вы используете gij java с другими вещами как, например, плагин обозревателя - они больше не будут работать. Если инсталлятор не работает, попробуйте: java -cp path_to_file_setup.jar <-Dtemp.dir=path_to_tmp_directory> run После установки пакета, перейдите в паку ros, внутри каталога opencascade и сделайте: ./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4 Теперь вы можете приступить к сборке. Вернитесь обратно в папку ros и сделайте: make Это займет много времени, может быть, несколько часов.

Когда это будет сделано, можно просто установить, выполнив sudo make install Библиотечные файлы будут скопированы в /usr/local/lib и это здорово, так как любая программа сможет найти их автоматически. Кроме того, вы также можете сделать sudo checkinstall делает тоже что и make install, но также создает новую запись в вашей системе управления пакетами теперь вы можете позже легко удалить их. Теперь уберем огромные временные файлы компиляции выполнив make clean

Возможная ошибка 1: Если вы используете OCC версии 6.2, вполне вероятно, что компилятор будет остановлен сразу же после запуска операции "make". Если это произошло, отредактируйте в "configure" сценарии, найдите выражение CXXFLAGS="$CXXFLAGS ", и замените на CXXFLAGS="$CXXFLAGS -ffriend-injection -fpermissive". Повторите этап конфигурации. Возможная ошибка 2: Возможно несколько модулей (WOKSH, WOKLibs, TKWOKTcl, TKViewerTest and TKDraw) будут жаловаться, что они не могут найти заголовки tcl/tk. В этом случае, посколько эта опция не доступна в конфигурационном сценарии, вам придется вручную править makefile каждого из этих модулей: Отправляйтесь в папку adm/make и в каждой папке неработающих модулей. Откройте в редакторе Makefile, найдите строки CSF_TclLibs_INCLUDES = -I/usr/include и CSF_TclTkLibs_INCLUDES = -I/usr/include и добавьте /tcl8.4 и /tk8.4 к ним, чтобы они выглядели следующим образом: CSF_TclLibs_INCLUDES = -I/usr/include/tcl8.4 и CSF_TclTkLibs_INCLUDES = -I/usr/include/tk8.4

SoQt
Библиотека SoQt должна быть скомпилирована несмотря на Qt4, как это и сделано в больштнстве современных дистрибутивах. Но на момент написания этой статьи был только такой пакет SoQt4 для Debian, но не для всех версий Ubuntu. Чтобы получить собранный пакет, надо сделать следующие действия:

wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.gz wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.diff.gz dpkg-source -x soqt_1.4.1-6.dsc sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mt-dev qt3-dev-tools libqt4-opengl-dev cd soqt-1.4.1 debuild sudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.1-6_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb

Если у вас 64битная система,вам вероятно нужно заменить i386 на amd64.

Pivy
Pivy не нужен для сборки и запуска FreeCAD, но он необходим для работы модуля черчения. Если вы не собираетесь использовать этот модуль, то pivy вам не нужен. На момент написания, Pivy очень новая программа и возможно её, она ещё не пробила дорогу в репозиторий вашего дистрибутива. Если вы не нанйдете Pivy в вашем хранилище пакетов вашего дистрибутива, вы можете получить пакеты debian/ubuntu на странице загрузок FreeCAD:

http://sourceforge.net/projects/free-cad/files/FreeCAD%20Linux/

или самостоятельно скомпилировать pivy:

Инструкции по компиляции Pivy

С помощью средств автоматизации
У вас должны быть установлены утилиты automake и libtool; в Debian/Ubuntu: aptitude install automake libtool Если вы работаете с исходниками получеными с помощью subversion вашим самым первым шагом должно быть ./autogen.sh это создаст конфигурационный сценарий и многое другое. Для процесса сборки мы предоставляем конфигурационный сценарий. просто введите ./configure Если вы хотите посмотреть все опции, которые можно определить, можно ввести ./configure --help. Обычно вам не понадобится ни одна из них - только если одна из ваших библиотек установлена в действительно необычном месте. После того как закончится конфигурация, скомпилирвать FreeCAD также просто как make Если возникли какие-либо ошибки при сборки из исходников, пожалйста дважды проверте эту страницу и файл README.Linux, затем вы можете перейти на страницу Bug Tracker в SourceForge, выбрать статус Any и кликнуть на кнопке Browse чтобы посмотрите предыдущие отчёты о проблемах компиляции. После того как вы успешно собрали FreeCAD, сделайте make install для установки на ваш компьютер. По умолчанию установка производится в папку ~/FreeCAD он устанавливается в ваш домашний католог, так что вам не нужны привелегии суперпользователя. Вместо make install, вы можете ввести checkinstall В этом случае FreeCAD будет установлен в вашу систему управления пакетами и его легко можно будет потом удалить. Но так как все FreeCAD установки расположены в одной директории, просто удалив её вы удалите и FreeCAD тоже.

С помощью cMake
cMake это новая система сборки которя обладает большим преимуществом в общем для различных целевых систем (Linux, Windows, MacOSX, и.т.д.). FreeCAD постепенно перейдет на систему cMake, и уже сейчас вы можете собрать FreeCAD этим способом. Предполагем что cMake уже установлен в вашей системе, перейдите в папку с исходниками FreeCAD, и введите: cmake. Сконфигурировав исходники, затем введите make FreeCAD собран. Надлежайшая общесистемная установка FreeCAD все ещё недоступна cmake, но вы можете запускать FreeCAD просто вводя ,/bin/FreeCAD

If you intend to follow the fast evolving SVN versions and maybe contribute to the code, cMake allows for out of source builds. Just create a build directory distinct from your freecad root folder, switch to this directory and there issue: cmake path-to-freecad-root make The effect is that every file generated at configure time goes in your build directory, and does not get mixed with the sources checked-out from SVN. The management of your local copy of the sources is greatly eased.
 * Out of source build:

There are a number of experimental or unfinished modules you may have to build if you want to work on them. To do so, you need to set the proper options for the configuration phase. Do it either on the command line, passing -D : = options to cMake or using one of the availables gui-frontends (eg for Debian, packages cmake-qt-gui or cmake-curses-gui).
 * Configuration options:

As an example, to configure on the command line with the Assembly module built, issue: cmake -D FREECAD_BUILD_ASSEMBLY:BOOL=ON path-to-freecad-root Possible options are listed in FreeCAD's root CmakeLists.txt file.

Дополнительные детали
Если вы планируете развивать Qt интерфейс для FreeCAD, вам понадобится Qt Designer плагин, который предоставляет все FreeCAD виджеты. Отправляйте в папку: freecad/src/Tools/plugins/widget До сих пор мы не поддерживаем makefile -- но вызвав qmake plugin.pro вы создадите их. Как только это будет сделано вызовите make будет создана библиотека libFreeCAD_widgets.so. Что бы о ней стало известно Qt Designer вы должны скопировать этот файл в $QTDIR/plugin/designer


 * Если вы чувствуете в себе достаточно смелости для погружения в код, вы можете собрать и консультироваться со сгенерированной Doxygen Документацией к исходному коду FreeCAD

Замечания для 64битных систем
При сборке FreeCAD для 64-битной систумы возникает проблема с пакетом OpenCASCADE 64-bit. Чтобы получить корректно работающий FreeCAD вам необходимо запустить ./configure сценарий с установленным параметром параметром define _OCC64 : ./configure CXXFLAGS="-D_OCC64" Для систем основанных на Debian, это не требуется так как используются двоичные пакеты, так что OpenCASCADE уже собран с этим параметром. Теперь нужно скомпилировать FreeCAD как это описано выше.

Automake макросы
Конфигурационный сценарий FreeCAD использует несколько automake макросов, которые иногда бывает не установлены всместе с их пакетами: bnv_have_qt.m4, coin.m4, и gts.m4. Если необходимо (ошибка при конфигурации), погуглите и вы легко найдете их. Это просто сценарии которые нужно поместить в вашу папку /usr/share/aclocal.

Создание deb пакета
Если вы планируете собрать Debian пакет из исходников, сперва вам нужно установить эти пакеты: dh-make devscripts lintian (optional, used for checking if packages are standard-compliant) Соберите пакет, открыв консоль просто перейдите в папку FreeCAD и вызовите debuild После того как пакет будет собран, вы можете использовать lintian чтобы убедиться, что пакет не содержит ошибок lintian your-fresh-new-freecad-package.deb (replace by the name of the package you just created)

Сценарии автосборки
Здесь Вы найдете все, что нужно для полной сборки FreeCAD. Это сценарий одного подхода и работает на свежем только что установленном дистрибутиве. Команды будут спрашивать пароль (для установки пакетов) и когда-нибудь запрашивать отпечатки пальцев для внешнего репозитория или https-subversion репозитория. Эти сценарии могут быть на 32 и 64 битных версиях. Они написаны для разных версий, но они также могут работать на более поздних версиях дистрибутивов с или без незначительных изменений.

Если у вас есть такой сценарий для вашего любимого дистрибутива, пришлите, пожалуйста! Мы включим его в эту статью.

Ubuntu 9.10 - Karmic Koala / Ubuntu 10.04 LTS - Lucid Lynx
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.6-dev libopencascade-dev libsoqt4-dev \ libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \ libtool autotools-dev automake bison flex doxygen svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) checkout the latest source
 * 1) go to source dir
 * 1) build configuration
 * 1) build FreeCAD
 * 1) test FreeCAD

Ubuntu 9.04 - Jaunty Jackalope
sudo apt-get install build-essential python libcoin40-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.6-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) get the needed tools and libs
 * 1) checkout the latest source
 * 1) go to source dir
 * 1) build configuration
 * 1) build FreeCAD
 * 1) test FreeCAD

OpenSuse 11.2
Это сценарий на данный момент не работает потому что:
 * libXerces-c-devel прослойка должна исчезнуть ....

sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. nice make cd bin ./FreeCAD -t 0
 * 1) install needed packages for development
 * 1) get the source
 * 1) go to source dir
 * 1) build configuration
 * 1) build FreeCAD
 * 1) test FreeCAD

OpenSuse 11.1
sudo zypper -p http://packman.unixheads.com/suse/11.1/ sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. nice make cd bin ./FreeCAD -t 0
 * 1) additional repository (for OpenCascade)
 * 1) install needed packages for development
 * 1) get the source
 * 1) go to source dir
 * 1) build configuration
 * 1) build FreeCAD
 * 1) test FreeCAD

Debian Squeeze
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 svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) get the needed tools and libs
 * 1) checkout the latest source
 * 1) go to source dir
 * 1) build configuration
 * 1) build FreeCAD
 * 1) test FreeCAD

Gentoo
Подробную информацию о сборке и возникших проблемах смотрите на форуме. Так как в Gentoo и так пакеты собираются из исходников, все что нам нужно, это создать свой оверлей и подключить еще с помощью layman. Вот ссылка на ebuild-ы freecad, а ниже представлен текст ebuild-a собирающего последнюю версию FreeCAD (осторожно!). Надеюсь вскоре свежая версия FreeCAD будет добавлена в репозитории.

EAPI="3" PYTHON_DEPEND="2" inherit multilib python subversion flag-o-matic DESCRIPTION="QT based Computer Aided Design Application" HOMEPAGE="http://www.freecadweb.org/wiki/" ESVN_REPO_URI="https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk" LICENSE="GPL-2" SLOT="0" KEYWORDS="" RDEPEND=" 	sci-libs/opencascade 	x11-libs/qt-gui:4 	x11-libs/qt-svg:4 	x11-libs/qt-webkit:4 	media-libs/coin 	dev-games/ode 	sci-libs/gts 	sys-libs/zlib 	dev-libs/boost 	dev-python/PyQt4 	dev-libs/xerces-c 	media-libs/SoQt 	dev-python/pivy 	dev-cpp/eigen:2 	" DEPEND="${RDEPEND} 	dev-lang/swig 	dev-libs/libf2c 	" src_unpack { subversion_src_unpack } src_configure { append-flags "-fno-strict-aliasing -Wno-write-strings" append-ldflags "-Wl,-z,defs" sh autogen.sh || die "autogen failed" econf \ --with-qt4-include="${EPREFIX}"/usr/include/qt4 \ --with-qt4-bin="${EPREFIX}"//usr/bin \ --with-qt4-lib="${EPREFIX}"//usr/$(get_libdir)/qt4 \ --with-occ-include=${CASROOT}/inc \ --with-occ-lib=${CASROOT}/lib if [ [ ! -f src/Build/Version.h ] ]; then # Manually update Version.h (supplied script failure) epatch ${FILESDIR}/freecad-9999-version.patch fi } src_install { emake DESTDIR="${D}" install || die "install failed" dodoc README.Linux ChangeLog.txt || die }
 * 1) Copyright 1999-2010 Gentoo Foundation
 * 2) Distributed under the terms of the GNU General Public License v2
 * 3) $Header: $