CompileOnUnix/ru

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

Получение исходников
Перед тем как собирать 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

Дополнительные детали
Если вы планируете развивать 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://sourceforge.net/apps/mediawiki/free-cad/" 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: $