0025343: Visualization - Update user's guide and DRAW commands description
[occt.git] / dox / dev_guides / building / 3rdparty / 3rdparty_windows.md
CommitLineData
ba06f8bb 1 Building 3rd-party libraries on Windows {#occt_dev_guides__building_3rdparty_windows}
e5bd0d98 2==============================================
3@tableofcontents
4
5@section dev_guides__building_3rdparty_win_1 Introduction
6
77906c4c 7This document presents guidelines for building third-party products used by Open CASCADE Technology (OCCT) and samples on Windows platform. It is assumed that you are already familiar with MS Visual Studio / Visual C++.
e5bd0d98 8
77906c4c 9You need to use the same version of MS Visual Studio for building all third-party products and OCCT itself, in order to receive a consistent set of run-time binaries.
e5bd0d98 10
77906c4c 11The links for downloading the third-party products are available on the web site of OPEN CASCADE SAS at http://www.opencascade.org/getocc/require/. There are two types of third-party products used by OCCT:
e5bd0d98 12
77906c4c 13* Mandatory products:
14 * Tcl/Tk 8.5 - 8.6;
18006a0f 15 * FreeType 2.4.10 - 2.5.3.
77906c4c 16* Optional products:
17 * TBB 3.x - 4.x;
18 * gl2ps 1.3.5 - 1.3.8;
18006a0f 19 * FreeImage 3.14.1 -3.16.0;
20 * VTK 6.1.0.
e5bd0d98 21
77906c4c 22It is recommended to create a separate new folder on your workstation, where you will unpack the downloaded archives of the third-party products, and where you will build these products (for example, *c:\\occ3rdparty*).
e5bd0d98 23
79d580f2 24Further in this document, this folder is referred to as *3rdparty*.
e5bd0d98 25
26@section dev_guides__building_3rdparty_win_2 Building Mandatory Third-party Products
27
79d580f2 28@subsection dev_guides__building_3rdparty_win_2_1 Tcl/Tk
e5bd0d98 29
64215435 30Tcl/Tk is required for DRAW test harness.
e5bd0d98 31
64215435 32@subsubsection dev_guides__building_3rdparty_win_2_1_1 Installation from sources: Tcl
33
34Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
35
361. In the *win* sub-directory, edit file *buildall.vc.bat*:
e5bd0d98 37
64215435 38 * Edit the line "call ... vcvars32.bat" to have correct path to the version of Visual Studio to be used for building, for instance:
e5bd0d98 39
64215435 40 call "%VS80COMNTOOLS%\vsvars32.bat"
e5bd0d98 41
64215435 42 If you are building 64-bit version, set environment accordingly, e.g.:
43
44 call "%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat" amd64
45
46 * Define variable *INSTALLDIR* pointing to directory where Tcl/Tk will be installed, e.g.:
47
48 set INSTALLDIR=D:\OCCT\3rdparty\tcltk-86-32
49
50 * Add option *install* to the first command line calling *nmake*:
51
52 nmake -nologo -f makefile.vc release htmlhelp install %1
53
54 * Remove second call to *nmake* (building statically linked executable)
55
562. Edit file *rules.vc* replacing line
57
58 SUFX = tsgx
59
60 by
61
62 SUFX = sgx
63
64 This is to avoid extra prefix 't' in the library name, which is not recognized by default by OCCT build tools.
65
663. In the command prompt, run *buildall.vc.bat*
67
68 You might need to run this script twice to have *tclsh* executable installed; check subfolder *bin* of specified installation path to verify this.
69
704. For convenience of use, we recommend making a copy of *tclsh* executable created in subfolder *bin* of *INSTALLDIR* and named with Tcl version number suffix, as *tclsh.exe* (with no suffix)
71
72 > cd D:\OCCT\3rdparty\tcltk-86-32\bin
73 > cp tclsh86.exe tclsh.exe
74
75@subsubsection dev_guides__building_3rdparty_win_2_1_2 Installation from sources: Tk
76
77Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
78
79Apply the same steps as described for building Tcl above, with the same INSTALLDIR.
80Note that Tk produces its own executable, called *wish*.
81
82You might need to edit default value of *TCLDIR* variable defined in *buildall.vc.bat* (should be not necessary if you unpack both Tcl and Tk sources in the same folder).
e5bd0d98 83
79d580f2 84@subsection dev_guides__building_3rdparty_win_2_2 FreeType
e5bd0d98 85
77906c4c 86FreeType is required for text display in a 3D viewer. You can download its sources from http://sourceforge.net/projects/freetype/files/
e5bd0d98 87
77906c4c 88### The building procedure
e5bd0d98 89
77906c4c 901. Unpack the downloaded archive of FreeType product into the *3rdparty* folder. As a result, you will get a folder named, for example, *3rdparty\\freetype-2.4.10*. Further in this document, this folder is referred to as *freetype*.
91
922. Open the solution file *freetype\\builds\\win32\\vc20xx\\freetype.sln* in Visual Studio. Here *vc20xx* stands for your version of Visual Studio.
e5bd0d98 93
77906c4c 943. Select the configuration to build: either Debug or Release.
e5bd0d98 95
79d580f2 964. Build the *freetype* project.
e5bd0d98 97
77906c4c 98 As a result, you will get a freetype import library (.lib) in the *freetype\\obj\\win32\\vc20xx* folder.
e5bd0d98 99
77906c4c 100
1015. If you build FreeType for a 64 bit platform, select in the main menu **Build - Configuration Manager** and add *x64* platform to the solution configuration by copying the settings from Win32 platform:
e5bd0d98 102
79d580f2 103 @image html /dev_guides/building/3rdparty/images/3rdparty_image001.png
104 @image latex /dev_guides/building/3rdparty/images/3rdparty_image001.png
e5bd0d98 105
79d580f2 106 Update the value of the Output File for x64 configuration:
e5bd0d98 107
79d580f2 108 @image html /dev_guides/building/3rdparty/images/3rdparty_image003.png
109 @image latex /dev_guides/building/3rdparty/images/3rdparty_image003.png
110
111 Build the *freetype* project.
e5bd0d98 112
77906c4c 113 As a result, you will obtain a 64 bit import library (.lib) file in the *freetype\\x64\\vc20xx* folder.
e5bd0d98 114
77906c4c 115 To build FreeType as a dynamic library (.dll) follow steps 6, 7 and 8 of this procedure.
79d580f2 116
77906c4c 1176. Open menu Project-> Properties-> Configuration Properties-> General and change option **Configuration Type** to *Dynamic Library (.dll)*.
79d580f2 1187. Edit file *freetype\\include\\freetype\\config\\ftoption.h*:
e5bd0d98 119
77906c4c 120 in line 255, uncomment the definition of macro *FT_EXPORT* and change it as follows:
e5bd0d98 121
79d580f2 122 #define FT_EXPORT(x) __declspec(dllexport) x
e5bd0d98 123
79d580f2 1248. Build the *freetype* project.
e5bd0d98 125
77906c4c 126 As a result, you will obtain the files of the import library (.lib) and the dynamic library (.dll) in folders <i>freetype \\objs\\release</i> or <i>\\objs\\debug </i>.
127
128 If you build for a 64 bit platform, follow step 5 of the procedure.
e5bd0d98 129
77906c4c 130 To facilitate the use of FreeType libraries in OCCT with minimal adjustment of build procedures, it is recommended to copy the include files and libraries of FreeType into a separate folder, named according to the pattern: *freetype-compiler-bitness-building mode*, where:
131 * **compiler** is *vc8* or *vc9* or *vc10* or *vc11*;
132 * **bitness** is *32* or *64*;
133 * **building mode** is *opt* (for Release) or *deb* (for Debug).
e5bd0d98 134
77906c4c 135 The *include* subfolder should be copied as is, while libraries should be renamed to *freetype.lib* and *freetype.dll* (suffixes removed) and placed to subdirectories *lib *and *bin*, respectively. If the Debug configuration is built, the Debug libraries should be put into subdirectories *libd* and *bind*.
e5bd0d98 136
137@section dev_guides__building_3rdparty_win_3 Building Optional Third-party Products
138
79d580f2 139@subsection dev_guides__building_3rdparty_win_3_1 TBB
140
77906c4c 141This third-party product is installed with binaries
79d580f2 142from the archive that can be downloaded from http://threadingbuildingblocks.org/.
77906c4c 143Go to the **Download** page, find the release version you need (e.g. *tbb30_018oss*) and pick the archive for Windows platform.
144
79d580f2 145Unpack the downloaded archive of TBB product into the *3rdparty* folder.
77906c4c 146
79d580f2 147Further in this document, this folder is referred to as *tbb*.
148
149@subsection dev_guides__building_3rdparty_win_3_2 gl2ps
150
151This third-party product should be built as a dynamically loadable library (dll file).
77906c4c 152You can download its sources from http://geuz.org/gl2ps/src/.
79d580f2 153
77906c4c 154### The building procedure
79d580f2 155
1561. Unpack the downloaded archive of gl2ps product (e.g. *gl2ps-1.3.5.tgz*) into the *3rdparty* folder.
e5bd0d98 157
77906c4c 158 As a result, you will get a folder named, for example, *3rdparty\\gl2ps-1.3.5-source*.
e5bd0d98 159
77906c4c 160 Rename it into <i>gl2ps-platform-compiler-building mode</i>, where
161 * **platform** is *win32* or *win64*;
162 * **compiler** is *vc8*, *vc9* or *vc10*;
163 * **building mode** - *opt* (for release) or *deb* (for debug).
164
165 For example, <i>gl2ps-win64-vc10-deb</i>
e5bd0d98 166
79d580f2 167 Further in this document, this folder is referred to as *gl2ps*.
e5bd0d98 168
79d580f2 1692. Download (from http://www.cmake.org/cmake/resources/software.html)
170 and install the *CMake* build system.
e5bd0d98 171
79d580f2 1723. Edit the file *gl2ps\\CMakeLists.txt*.
e5bd0d98 173
77906c4c 174 After line 113 in *CMakeLists.txt*:
e5bd0d98 175
79d580f2 176 set_target_properties(shared PROPERTIES COMPILE_FLAGS \"-DGL2PSDLL -DGL2PSDLL_EXPORTS\")
e5bd0d98 177
178 add the following line:
179
79d580f2 180 add_definitions(-D_USE_MATH_DEFINES)
e5bd0d98 181
77906c4c 182 Attention: If Cygwin was installed on your computer, make sure that there is no path to it in the *PATH* variable to avoid possible conflicts during the configuration.
e5bd0d98 183
77906c4c 1844. Launch CMake <i>(cmake-gui.exe)</i> using the Program menu.
79d580f2 185
186 In CMake:
e5bd0d98 187
79d580f2 188 * Define where the source code is.
189 This path must point to *gl2ps* folder.
190
191 * Define where to build the binaries.
192 This path must point to the folder where generated gl2ps project binaries will be placed
193 (for example, *gl2ps\\bin*).
194 Further in this document, this folder is referred to as *gl2ps_bin*.
195
77906c4c 196 * Press **Configure** button.
197
79d580f2 198 @image html /dev_guides/building/3rdparty/images/3rdparty_image004.png
199 @image latex /dev_guides/building/3rdparty/images/3rdparty_image004.png
200
201 * Select the generator (the compiler and the target platform - 32 or 64 bit) in the pop-up window.
77906c4c 202
79d580f2 203 @image html /dev_guides/building/3rdparty/images/3rdparty_image005.png
204 @image latex /dev_guides/building/3rdparty/images/3rdparty_image005.png
205
77906c4c 206 * Press **Finish** button to return to the main CMake window.
79d580f2 207 Expand the ENABLE group and uncheck ENABLE_PNG and ENABLE_ZLIB check boxes.
77906c4c 208
79d580f2 209 @image html /dev_guides/building/3rdparty/images/3rdparty_image006.png
210 @image latex /dev_guides/building/3rdparty/images/3rdparty_image006.png
211
77906c4c 212 * Expand the CMAKE group and define *CMAKE_INSTALL_PREFIX* which is the path where you want to install the build results, for example, *c:\\occ3rdparty\\gl2ps-1.3.5*.
213
79d580f2 214 @image html /dev_guides/building/3rdparty/images/3rdparty_image007.png
215 @image latex /dev_guides/building/3rdparty/images/3rdparty_image007.png
216
77906c4c 217 * Press **Configure** button again, then press **Generate** button to generate Visual Studio projects. After completion, close CMake application.
e5bd0d98 218
79d580f2 2195. Open the solution file *gl2ps_bin\\gl2ps.sln* in Visual Studio.
220
77906c4c 221 * Select a configuration to build
222 * Choose **Release** to build Release binaries.
223 * Choose **Debug** to build Debug binaries.
224 * Select a platform to build.
225 * Choose **Win32** to build for a 32 bit platform.
226 * Choose **x64** to build for a 64 bit platform.
79d580f2 227 * Build the solution.
228 * Build the *INSTALL* project.
e5bd0d98 229
77906c4c 230As a result, you should have the installed gl2ps product in the *CMAKE_INSTALL_PREFIX* path.
e5bd0d98 231
79d580f2 232@subsection dev_guides__building_3rdparty_win_3_3 FreeImage
e5bd0d98 233
79d580f2 234This third-party product should be built as a dynamically loadable library (.dll file).
235You can download its sources from
236http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
e5bd0d98 237
77906c4c 238### The building procedure:
e5bd0d98 239
79d580f2 2401. Unpack the downloaded archive of FreeImage product into *3rdparty* folder.
241
77906c4c 242 As a result, you should have a folder named *3rdparty\\FreeImage*.
e5bd0d98 243
77906c4c 244 Rename it according to the rule: *freeimage-platform-compiler-building mode*, where
79d580f2 245
77906c4c 246 * **platform** is *win32* or *win64*;
247 * **compiler** is *vc8* or *vc9* or *vc10* or *vc11*;
248 * **building mode** is *opt* (for release) or *deb* (for debug)
79d580f2 249
250 Further in this document, this folder is referred to as *freeimage*.
251
77906c4c 2522. Open the solution file *freeimage\\FreeImage.*.sln* in your Visual Studio.
e5bd0d98 253
77906c4c 254 If you use a Visual Studio version higher than VC++ 2008, apply conversion of the workspace.
79d580f2 255 Such conversion should be suggested automatically by Visual Studio.
e5bd0d98 256
79d580f2 2573. Select a configuration to build.
258
77906c4c 259 - Choose **Release** if you are building Release binaries.
260 - Choose **Debug** if you are building Debug binaries.
79d580f2 261
e5bd0d98 262 *Note:*
79d580f2 263
77906c4c 264 If you want to build a debug version of FreeImage binaries then you need to rename the following files in FreeImage and FreeimagePlus projects:
265
266 Project -> Properties -> Configuration Properties -> Linker -> General -> Output File
e5bd0d98 267
77906c4c 268 FreeImage*d*.dll to FreeImage.dll
269 FreeImagePlus*d*.dll to FreeImagePlus.dll
e5bd0d98 270
77906c4c 271 Project -> Properties -> Configuration Properties -> Linker -> Debugging-> Generate Program Database File
e5bd0d98 272
77906c4c 273 FreeImage*d*.pdb to FreeImage.pdb
274 FreeImagePlus*d*.pdb to FreeImagePlus.pdb
e5bd0d98 275
77906c4c 276 Project -> Properties -> Configuration Properties -> Linker -> Advanced-Import Library
e5bd0d98 277
77906c4c 278 FreeImage*d*.lib to FreeImage.lib
279 FreeImagePlus*d*.lib to FreeImagePlus.lib
e5bd0d98 280
77906c4c 281 Project -> Properties -> Configuration Properties -> Build Events -> Post -> Build Event -> Command Line
e5bd0d98 282
77906c4c 283 FreeImage*d*.dll to FreeImage.dll
284 FreeImage*d*.lib to FreeImage.lib
285 FreeImagePlus*d*.dll to FreeImagePlus.dll
286 FreeImagePlus*d*.lib to FreeImagePlus.lib
e5bd0d98 287
77906c4c 288 Additionally, rename in project FreeImagePlus
289
290 Project -> Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
e5bd0d98 291
79d580f2 292 from FreeImage*d*.lib to FreeImage.lib
e5bd0d98 293
79d580f2 2944. Select a platform to build.
e5bd0d98 295
77906c4c 296 - Choose *Win32* if you are building for a 32 bit platform.
297 - Choose *x64* if you are building for a 64 bit platform.
e5bd0d98 298
79d580f2 2995. Start the building process.
e5bd0d98 300
77906c4c 301 As a result, you should have the library files of FreeImage product in *freeimage\\Dist* folder (*FreeImage.dll* and *FreeImage.lib*) and in *freeimage\\Wrapper\\FreeImagePlus\\dist* folder (*FreeImagePlus.dll* and *FreeImagePlus.lib*).
e5bd0d98 302
18006a0f 303@subsection dev_guides__building_3rdparty_win_3_4 VTK
e5bd0d98 304
18006a0f 305VTK is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK Integration Services component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library.
79d580f2 306
18006a0f 307### The building procedure:
79d580f2 308
18006a0f 3091. Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it into *3rdparty* folder.
79d580f2 310
18006a0f 311 As a result, you will get a folder named, for example, <i>3rdparty\VTK-6.1.0.</i>
79d580f2 312
18006a0f 313 Further in this document, this folder is referred to as *VTK*.
77906c4c 314
18006a0f 3152. Use CMake to generate VS projects for building the library:
316 - Start CMake-GUI and select VTK folder as source path, and the folder of your choice for VS project and intermediate build data.
317 - Click **Configure**.
318 - Select the VS version to be used from the ones you have installed (we recommend using VS 2010) and the architecture (32 or 64-bit).
319 - Generate VS projects with default CMake options. The open solution *VTK.sln* will be generated in the build folder.
79d580f2 320
18006a0f 3213. Build project VTK in Release mode.