CompileOnWindows/jp

この記事では、Windows上でFreeCADをコンパイルする方法を順番にで説明しています.

Prerequisites
必要なのは、主にコンパイラです. Windows上で我々は最新のサービスパックを適用したMS VisualStudio 8コンパイラ（またはVC++ Express）を使用しています. CygwinやMinGWのgccを使用するのはたぶん可能ですが、今までのところ試されたり移植されたりしていません. 我々はVC8 Express Editionを使用するように移植しました. あなたは例えばWindows.hを得るために、Windows Platform SDKをダウンロードする必要があります. また、あなたは正常にFreeCADをコンパイルするために、すべてのサードパーティ製のライブラリが必要です.

あなたがMSのコンパイラーを使用する場合、Windows上でFreeCADを構築するために必要なすべてのLIBSを提供するFreeCAD LibPackをダウンロードするでしょう.

その他の前提条件は、（および有用なプログラム）は以下のとおりです. :
 * cMake
 * TortoiseGit
 * Python 2.6
 * WiX (Windows installer XML v3.0) - msiインストーラを作りたい場合

システムパスに、以下のプログラムへのパスを加えることも必要です. :
 * Libpack
 * git (TortoiseGitではなく、git.exe)
 * python

cMakeを用いたビルド
まず、 cMakeをダウンロードしてビルドマシンにインストールします.

cMakeへの切り替え
バージョン0.9から、様々なコンパイラのためのbuild/makeファイルを生成するのに cMakeを利用します. 我々は、.vcproj ファイルをもう提供しません. もし、以前のバージョンのFreeCAD(バージョン0.8以前)をビルドしたい場合、この記事の後ろにある"以前のバージョンのビルド"を参照して下さい.

我々は30を超えるビルド対象や様々なコンパイラへの対応のためのプロジェクトファイルを維持するのが苦痛になってきたので切り替えました. cMakeを使うことで、我々はまだ主として使うコンパイラはMS VC9 Expressですが、Code::Blocks、Qt CreaterやEclipse CDT等の代替IDEを使用できる可能性がでてきました. 将来的には商標権のあるコンパイラソフトウェアを利用せずに、Windows上でビルドすることを計画しています.

ビルドプロセスの設定
CMakeのでFreeCADを構築するための最初のステップは、環境を構成することです. これには基本的に以下の２つの方法があります. :
 * LibPackを利用する
 * 必要なライブラリをすべてインストールして、cMakeにそれらを見つけてもらう.

前者の方法では、あなたはLibPackのパスをcMakeで設定するだけでよく、残りの部分は自動的に実行され、以下のような画面が表示されます. :

LibPackのパスが 変数 FREECAD_LIBPACK_DIR に設定されていることを確認してください. すべてのincludeとパスが設定されいることから始めます. あなたはただ Generate ボタンを押す必要があり、プロジェクトファイルが生成されます.

もし FREECAD_LIBPACK_USE オプションをoffにした場合、設定はあなたのシステム内から全ての必要なライブラリを探します. 多かれ少なかれ、うまくいくかどうかはライブラリに依存します. そのため、幾つかのパスは手動で定義する必要がしばしばあります. cMakeは、見つからないものや、指定すべきものをあなたに指摘します.

ビルド処理のオプション
cmakeのビルドシステムは、ビルドプロセス上で多くの柔軟性を私たちに提供します. これは、我々はいくつかの機能またはモジュールをオフに切り替えることができるということです. これはLinuxのカーネルビルドに似ています. ビルドプロセスを決定するために、多くのスイッチがあります.

以下はスイッチの説明です. 我々はビルドの柔軟性をより向上させたいので、これらは将来的には大きく変更する可能性が高いです.

Procedure with cMake and Visual Studio 2008
Once you start cMake GUI, select source folder, add destination folder and click on "Configure". cMake will ask you to select generator - recommended for FreeCAD is "Visual Studio 9 2008".

After you click "Next", cMake will throw error since it can not find LibPack. You will need to manually select folder where Libpack is in "FREECAD_LIBPACK_DIR" variable. After that you need to click on "Configure" once more. After configure is done, click on "Generate". Now you are done with cMake, and you can close it.

Before using Visual Studio, we need to add libpack to system path (you need to do this only once, when building first time). You need to go to "Control Panel >> System >> Advanced System Settings". In the "System properties" dialog, under "Advanced" tab there is button "Environment Variables". Click on it. After you click on it, add libpack to the Path. Separate it from other path variables with ";".

Now you need to start Visual Studio 2008. Visual C++ Express 2008 will also work. Before building, it is good procedure to copy bin folder from libpack\bin folder to bin folder of the build files (generated with cMake).

After this go to "File >> Open >> Project/Solution". You need to open FreeCAD_Trunk.sln, from the build files generated with cMake. Once it is opened, there will be three popup menus in the toolbar. One of them says "Debug" - Switch it to "Release". Then execute "Build >> Build Solution" (or just press F7) - this process will last long time.

Once it is done, choose "Debug >> Start without Debugging". Popup window will ask you to select exe file. Click on a popup menu under "Executable File Name" and choose "Browse". You need to go to \bin folder where source files are, and select "FreeCAD.exe"

and you are done!

command line build
Here an example how to build FreeCAD from the Command line:

rem @echo off rem  Build script, uses vcbuild to completetly build FreeCAD rem update trunc d: cd "D:\_Projekte\FreeCAD\FreeCAD_0.9" "C:\Program Files (x86)\Subversion\bin\svn.exe" update rem set the aprobiated Variables here or outside in the system set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem set INCLUDE= set LIB= rem Register VS Build programms call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" rem Set Standard include paths set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include rem Set lib Pathes set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "D:\_Projekte\FreeCAD FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv

Using LibPack
To make it easier to get FreeCAD compiled, we provide a collection of all needed libraries. It's called the LibPack. You can find it on the download page on sourceforge.

You need to set the following environment variables:


 * FREECADLIB = "D:\Wherever\LIBPACK"


 * QTDIR = "%FREECADLIB%"

Add "%FREECADLIB%\bin" and "%FREECADLIB%\dll" to the system PATH variable. Keep in mind that you have to replace "%FREECADLIB%" with the path name, since Windows does not recursively replace environment variables.

Directory setup in Visual Studio
Some search path of Visual Studio need to be set. To change them, use the menu ''Tools→Options→Directory

Includes
Add the following search path to the include path search list:
 * %FREECADLIB%\include
 * %FREECADLIB%\include\Python
 * %FREECADLIB%\include\boost
 * %FREECADLIB%\include\xercesc
 * %FREECADLIB%\include\OpenCascade
 * %FREECADLIB%\include\OpenCV
 * %FREECADLIB%\include\Coin
 * %FREECADLIB%\include\SoQt
 * %FREECADLIB%\include\QT
 * %FREECADLIB%\include\QT\Qt3Support
 * %FREECADLIB%\include\QT\QtCore
 * %FREECADLIB%\include\QT\QtGui
 * %FREECADLIB%\include\QT\QtNetwork
 * %FREECADLIB%\include\QT\QtOpenGL
 * %FREECADLIB%\include\QT\QtSvg
 * %FREECADLIB%\include\QT\QtUiTools
 * %FREECADLIB%\include\QT\QtXml
 * %FREECADLIB%\include\Gts
 * %FREECADLIB%\include\zlib

Libs
Add the following search path to the lib path search list:
 * %FREECADLIB%\lib

Executables
Add the following search path to the executable path search list:
 * %FREECADLIB%\bin
 * TortoiseSVN binary installation directory, usually "C:\Programm Files\TortoiseSVN\bin", this is needed for a distribution build when SubWVRev.exe is used to extract the version number from Subversion.

Python needed
During the compilation some Python scripts get executed. So the Python interpreter has to function on the OS. Use a command box to check it. If the Python library is not properly installed you will get an error message like Cannot find python.exe. If you use the LibPack you can also use the python.exe in the bin directory.

Special for VC8
When building the project with VC8, you have to change the link information for the WildMagic library, since you need a different version for VC6 and VC8. Both versions are supplied in LIBPACK/dll. In the project properties for AppMesh change the library name for the wm.dll to the VC8 version. Take care to change it in Debug and Release configuration.

Compile
After you conform to all prerequisites the compilation is - hopefully - only a mouse click in VC ;-)

After Compiling
To get FreeCAD up and running from the compiler environment you need to copy a few files from the LibPack to the bin folder where FreeCAD.exe is installed after a successful build:


 * python.exe and python_d.exe from LIBPACK/bin
 * python25.dll and python25_d.dll from LIBPACK/bin
 * python25.zip from LIBPACK/bin
 * make a copy of Python25.zip and rename it to Python25_d.zip
 * QtCore4.dll from LIBPACK/bin
 * QtGui4.dll from LIBPACK/bin
 * boost_signals-vc80-mt-1_34_1.dll from LIBPACK/bin
 * boost_program_options-vc80-mt-1_34_1.dll from LIBPACK/bin
 * xerces-c_2_8.dll from LIBPACK/bin
 * zlib1.dll from LIBPACK/bin
 * coin2.dll from LIBPACK/bin
 * soqt1.dll from LIBPACK/bin
 * QtOpenGL4.dll from LIBPACK/bin
 * QtNetwork4.dll from LIBPACK/bin
 * QtSvg4.dll from LIBPACK/bin
 * QtXml4.dll from LIBPACK/bin

When using a LibPack with a Python version older than 2.5 you have to copy two further files:
 * zlib.pyd and zlib_d.pyd from LIBPACK/bin/lib. This is needed by python to open the zipped python library.
 * _sre.pyd and _sre_d.pyd from LIBPACK/bin/lib. This is needed by python for the built in help system.

If you don't get it running due to a Python error it is very likely that one of the zlib*.pyd files is missing.

Additional stuff
If you whant to build the source code documentation you need DoxyGen.

To create an intstaller package you need WIX.

During the compilation some Python scripts get executed. So the Python interpreter has to work properly.

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

First of all you should build the Qt plugin that provides all custom widgets of FreeCAD we need for the Qt Designer. The sources are located under //src/Tools/plugins/widget//. So far we don't provide a makefile -- but calling qmake plugin.pro creates it. Once that's done, calling make will create the library //libFreeCAD_widgets.so//. To make this library known to your Qt Designer you have to copy the file to //$QTDIR/plugin/designer//.