Rev 19087 | Rev 19227 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
16720 | jghali | 1 | BUILDING SCRIBUS ON MICROSOFT WINDOWS WITH MICROSOFT VISUAL STUDIO |
2 | ================================================================== |
||
3 | |||
4 | HOW TO DO THE BUILD |
||
5 | =================== |
||
6 | |||
19104 | jghali | 7 | This documentation is minimal and assume you have a decent knowledge of |
16720 | jghali | 8 | Microsoft Visual Studio. No help regarding use of Visual Studio and |
9 | related tools will be provided. |
||
10 | |||
11 | You will need: |
||
12 | - Microsoft Windows XP, Vista or 7 |
||
13 | - Microsoft Visual Studio 2008 or Visual C++ Express Edition 2008 |
||
17717 | jghali | 14 | - A recent Qt release built with Visual Studio 2008 (version >= 4.7) |
17379 | jghali | 15 | - Cairo sources from cairographics.org (version >= 1.11.4) |
16 | - Pixman sources from cairographics.org (version >= 0.24.4) |
||
16720 | jghali | 17 | - Boost from www.boost.org (version >= 1.35.0) |
17505 | jghali | 18 | - Freetype sources from freetype.org (version >= 2.4.0) |
19 | - Libhunspell sources from http://hunspell.sourceforge.net/ (version >= 1.3.2) |
||
16720 | jghali | 20 | - Libjpeg win32 libs and binaries from the GnuWin32 project |
21 | - Libtiff win32 libs and binaries from the GnuWin32 project |
||
17505 | jghali | 22 | - Libxml2 win32 binaries from the Libxml project |
16720 | jghali | 23 | - LittleCMS sources from www.littlecms.com (version >= 2.1) |
17717 | jghali | 24 | - PoDoFo sources from podofo.sourceforge.net (version >= 0.8.0) |
18026 | jghali | 25 | - Poppler sources from poppler.freedesktop.org (version >= 0.19.0) |
26 | - Poppler data from poppler.freedesktop.org (version >= 0.4.5) |
||
16720 | jghali | 27 | - A Python 2.7 Windows binary build. |
28 | For debug builds, you'll need a release that contains the python27_d.dll . |
||
29 | |||
30 | Some more details can be found below in the section entitled GETTING DEPENDENCIES. |
||
31 | |||
19104 | jghali | 32 | After having installed all dependencies, open Scribus-build-props.vsprops files located |
16720 | jghali | 33 | in Scribus\win32\vc9 and update the dependency paths to match your system. |
34 | |||
19087 | jghali | 35 | If you have Visual Studio 2010, open the Visual Studio solution located in Scribus\win32\vc10 and start building. |
36 | If you have Visual Studio 2012, open the Visual Studio solution located in Scribus\win32\vc11 and start building. |
||
16720 | jghali | 37 | |
19087 | jghali | 38 | After building completed, you will find executables in a Scribus-builds\scribus-$(Configuration)-$(Platform)-* |
19104 | jghali | 39 | directory located in same directory as Scribus sources. Those executables will not function yet. |
16720 | jghali | 40 | Scribus resources must be copied from source directory to install directory first. |
41 | |||
19104 | jghali | 42 | In order to do that, create a batch script and copy/paste following lines: |
16720 | jghali | 43 | |
44 | set SCRIBUS_SRC_PATH=.\Scribus |
||
45 | set SCRIBUS_BUILD_ROOT=.\Scribus-builds |
||
19087 | jghali | 46 | set SCRIBUS_INSTALL_PATH=.\Scribus-builds\scribus-debug-win32-v100 |
16720 | jghali | 47 | |
48 | copy %SCRIBUS_SRC_PATH%\AUTHORS %SCRIBUS_INSTALL_PATH%\share\doc |
||
49 | copy %SCRIBUS_SRC_PATH%\COPYING %SCRIBUS_INSTALL_PATH%\share\doc |
||
50 | copy %SCRIBUS_SRC_PATH%\LINKS %SCRIBUS_INSTALL_PATH%\share\doc |
||
51 | copy %SCRIBUS_SRC_PATH%\TRANSLATION %SCRIBUS_INSTALL_PATH%\share\doc |
||
19087 | jghali | 52 | xcopy %SCRIBUS_SRC_PATH%\doc %SCRIBUS_INSTALL_PATH%\share\doc /s /y /D |
16720 | jghali | 53 | xcopy %SCRIBUS_SRC_PATH%\resources\dicts %SCRIBUS_INSTALL_PATH%\share\dicts /s /y /D |
54 | xcopy %SCRIBUS_SRC_PATH%\resources\editorconfig %SCRIBUS_INSTALL_PATH%\share\editorconfig /s /y |
||
55 | xcopy %SCRIBUS_SRC_PATH%\resources\icons %SCRIBUS_INSTALL_PATH%\share\icons /s /y /D |
||
56 | xcopy %SCRIBUS_SRC_PATH%\resources\loremipsum %SCRIBUS_INSTALL_PATH%\share\loremipsum /s /y |
||
18862 | jghali | 57 | xcopy %SCRIBUS_SRC_PATH%\resources\profiles %SCRIBUS_INSTALL_PATH%\share\profiles /s /y |
58 | xcopy %SCRIBUS_SRC_PATH%\resources\swatches %SCRIBUS_INSTALL_PATH%\share\swatches /s /y |
||
16720 | jghali | 59 | xcopy %SCRIBUS_SRC_PATH%\resources\templates %SCRIBUS_INSTALL_PATH%\share\templates /s /y /D |
60 | copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathcut\*.png %SCRIBUS_INSTALL_PATH%\share\icons\ /y |
||
61 | copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathfinder\*.png %SCRIBUS_INSTALL_PATH%\share\icons\ /y |
||
62 | xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\scripts %SCRIBUS_INSTALL_PATH%\share\scripts /s /y /D |
||
63 | xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\samples %SCRIBUS_INSTALL_PATH%\share\samples /s /y |
||
18862 | jghali | 64 | copy %SCRIBUS_SRC_PATH%\scribus\plugins\import\ps\import.prolog %SCRIBUS_INSTALL_PATH%\libs\import.prolog |
16720 | jghali | 65 | copy %SCRIBUS_SRC_PATH%\scribus\plugins\barcodegenerator\barcode.ps %SCRIBUS_INSTALL_PATH%\share\plugins\barcode.ps |
66 | copy %SCRIBUS_SRC_PATH%\scribus\unicodemap\unicodenameslist.txt %SCRIBUS_INSTALL_PATH%\share\unicodenameslist.txt |
||
67 | del %SCRIBUS_BUILD_ROOT%\*CMake* /s |
||
68 | del %SCRIBUS_BUILD_ROOT%\*MakeFile* /s |
||
69 | |||
70 | Adjust SCRIBUS_SRC_PATH, SCRIBUS_BUILD_ROOT and SCRIBUS_INSTALL_PATH as needed and run batch script. |
||
71 | |||
19104 | jghali | 72 | Download poppler data package on poppler.freedesktop.org. Copy content of archive |
16768 | jghali | 73 | in %SCRIBUS_INSTALL_PATH%\share\poppler. |
74 | |||
16720 | jghali | 75 | Now copy the DLLs from the zlib, libpng, qt, lcms, freetype, libtiff, libjpeg, |
76 | libxml, and podofo directories into the Scribus install directory (where |
||
19104 | jghali | 77 | scribus.exe is). Copy also the Dlls, lib and tcl directories from your python |
16720 | jghali | 78 | install to scribus install path. Finally copy python27.dll. Scribus should now run. |
79 | |||
80 | Crash problems at runtime? Verify that Qt, freetype, lcms, and Scribus all use |
||
81 | the same runtime, and that all were built for debugging or all for release not |
||
82 | a mixture of the two. Windows does not permit you to mix debug and release |
||
83 | executables like other platforms do. |
||
84 | |||
85 | You can use depends.exe to check that the runtimes match. |
||
86 | |||
87 | GETTING DEPENDENCIES |
||
88 | ==================== |
||
89 | |||
90 | This is a quick and dirty set of notes that will be filled out once everything's |
||
19104 | jghali | 91 | verified as correct and working. It assumes that you'll be building all your |
16720 | jghali | 92 | dependencies at a single root, like C:\Developer. The root *MUST* not have spaces |
93 | in its path. |
||
94 | |||
95 | ---- |
||
96 | Qt: |
||
97 | |||
17717 | jghali | 98 | Download the latest qt >= 4.7 snapshot from ftp://ftp.qt.nokia.com/qt/source |
16720 | jghali | 99 | and unpack it to C:\Developer. |
100 | |||
101 | Start a command line and import your Visual Studio environment: |
||
102 | \path\to\visual\studio\VC\vcvarsall.bat |
||
103 | |||
104 | now cd to C:\Developer\qt-everywhere-whatever and run configure: |
||
105 | configure -debug-and-release -fast -no-qt3support -platform win32-msvc2008 |
||
106 | |||
107 | and nmake. |
||
108 | |||
109 | ---- |
||
110 | Boost: |
||
111 | |||
112 | Download the latest boost libraries from www.boost.org. Unpack, no need to compile |
||
113 | anything as Scribus only use functionnalities embedded in C++ templates. |
||
114 | |||
115 | ---- |
||
19104 | jghali | 116 | Zlib and LibPNG: |
16720 | jghali | 117 | |
118 | Zlib and LibPNG are both embedded in the QtCore library with symbols exported |
||
119 | for public use . If you're using a Qt binary redist you may still need to |
||
120 | download these libraries sources for their headers. In most cases your |
||
121 | copy of Qt will contain a directory called %QTDIR%\src\3rdparty\zlib |
||
122 | (and one for libpng), in which case you need not worry about these libraries at |
||
123 | all. |
||
124 | |||
125 | --- |
||
19104 | jghali | 126 | Cairo and Pixman: |
16720 | jghali | 127 | |
19104 | jghali | 128 | Cairo and pixman sources can be downloaded from cairographics.org at following address: |
16720 | jghali | 129 | |
130 | http://cairographics.org/releases/ |
||
131 | |||
132 | Follow instructions in sources packages to build pixman, then cairo. |
||
133 | |||
19104 | jghali | 134 | You will however probably find easier to directly download packages with Visual Studio 2008 |
135 | solutions ready to build. You can find required file at following address: |
||
16720 | jghali | 136 | |
137 | https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/ |
||
138 | |||
139 | Download the both scribus-pixman-* and scribus-cairo-* zip files. Unpack them. |
||
140 | |||
19104 | jghali | 141 | Build pixman first: open the pixman-win32 solution located in pixman-whatever\win32 |
16720 | jghali | 142 | directory and build Debug and Release configurations. |
143 | |||
19104 | jghali | 144 | Build cairo afterwards: open the cairo-win32 solution located in cairo-whatever\win32 |
16720 | jghali | 145 | directory and build Debug and Release configurations. |
146 | |||
147 | ---- |
||
17505 | jghali | 148 | Freetype: |
149 | |||
150 | Unpack freetype |
||
151 | |||
152 | Open include\freetype\config\ftoption.h and replace the DLL export compilation section |
||
19104 | jghali | 153 | by following lines: |
17505 | jghali | 154 | |
155 | #ifndef __GNUC__ |
||
156 | # define __DLL_IMPORT__ __declspec(dllimport) |
||
157 | # define __DLL_EXPORT__ __declspec(dllexport) |
||
158 | #else |
||
159 | # define __DLL_IMPORT__ __attribute__((dllimport)) extern |
||
160 | # define __DLL_EXPORT__ __attribute__((dllexport)) extern |
||
161 | #endif |
||
162 | |||
163 | #if (defined __WIN32__) || (defined _WIN32) |
||
164 | # ifdef BUILD_FREETYPE2_DLL |
||
165 | # define FREETYPE2_DLL_IMPEXP __DLL_EXPORT__ |
||
166 | # elif defined(FREETYPE2_STATIC) |
||
167 | # define FREETYPE2_DLL_IMPEXP |
||
168 | # elif defined (USE_FREETYPE2_DLL) |
||
169 | # define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__ |
||
170 | # elif defined (USE_FREETYPE2_STATIC) |
||
171 | # define FREETYPE2_DLL_IMPEXP |
||
172 | # else /* assume USE_FREETYPE2_DLL */ |
||
173 | # define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__ |
||
174 | # endif |
||
175 | #else /* __WIN32__ */ |
||
176 | # define FREETYPE2_DLL_IMPEXP |
||
177 | #endif |
||
178 | |||
179 | #define FT_EXPORT(x) FREETYPE2_DLL_IMPEXP x |
||
180 | #define FT_BASE(x) FREETYPE2_DLL_IMPEXP x |
||
181 | |||
182 | Open builds\win32\vc2008 |
||
183 | Build "Release Multithreaded" and "Debug Multithreaded" |
||
184 | |||
185 | At the end of the process you must have those files in your freetype lib |
||
19104 | jghali | 186 | directory: |
17505 | jghali | 187 | - freetype.dll |
188 | - freetype.lib |
||
189 | - freetypeD.dll |
||
190 | - freetypeD.lib |
||
191 | |||
192 | ---- |
||
19104 | jghali | 193 | Libhunspell: |
17505 | jghali | 194 | |
19104 | jghali | 195 | You will probably find easier to directly download packages with Visual |
196 | Studio 2008 solutions ready to build. You can find required file at |
||
197 | following address: |
||
17505 | jghali | 198 | |
199 | https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/ |
||
200 | |||
201 | Download the scribus-hunspell-*.zip archive. Unpack it. |
||
202 | |||
19104 | jghali | 203 | Open the visual studio solution located in hunspell-whatever/src/win-api directory and build |
17505 | jghali | 204 | Debug and Release configurations of Libhunspell project. |
205 | |||
206 | ---- |
||
19104 | jghali | 207 | Libjpeg: |
16720 | jghali | 208 | |
209 | While Qt also bundles libjpeg, it's not linked to the main DLL but rather a plugin. |
||
210 | As such, we need to link to it directly. |
||
211 | |||
19104 | jghali | 212 | Get jpeg libraries from GnuWin32 project on Sourceforge: |
16720 | jghali | 213 | |
214 | http://sourceforge.net/projects/gnuwin32/files/jpeg/6b-3/jpeg-6b-3-lib.zip/download |
||
215 | |||
19104 | jghali | 216 | Unpack in C:\Developer. After unpacking you directory layout must be as following: |
16720 | jghali | 217 | |
218 | C:\Developer |
||
219 | |- libjpeg-6b-3 |
||
220 | |- include |
||
221 | |- lib |
||
222 | |- manifest |
||
223 | |||
224 | ---- |
||
19104 | jghali | 225 | LittleCMS: |
16720 | jghali | 226 | |
227 | Get lcms sources (>= 2.1). Although it is possible to build Scribus with lcms 1, |
||
228 | you can only do so without modifying lcms sources with lcms >= 2.1. |
||
229 | We will only describe here instructions related to lcms >= 2.1. |
||
230 | |||
231 | Build using VC project in Projects\VC2008 dir. Modify projects if necessary so |
||
232 | as to make them use the multithreaded dll runtim libraries. |
||
233 | Build the static libraries in debug and release configurations. |
||
234 | |||
19104 | jghali | 235 | After building you must have a lcms2_static.lib and lcms2_staticd.lib in |
16720 | jghali | 236 | your lcms source directory. If this is not the case modify projects as necessary. |
237 | |||
238 | ---- |
||
19104 | jghali | 239 | Libtiff: |
16720 | jghali | 240 | |
241 | While Qt also bundles libtiff, it's not linked to the main DLL but rather a plugin. |
||
242 | As such, we need to link to it directly. |
||
243 | |||
19104 | jghali | 244 | Download libtiff libraries, binaries and dependency packages from GnuWin32 project |
245 | on sourceforge: |
||
16720 | jghali | 246 | |
247 | http://sourceforge.net/projects/gnuwin32/files/tiff/3.8.2/ |
||
248 | |||
19104 | jghali | 249 | Unpack them in C:\Developer. After unpacking you directory layout must be as following: |
16720 | jghali | 250 | |
251 | C:\Developer |
||
252 | |- libtiff-3.8.2 |
||
253 | |- bin |
||
254 | |- contrib |
||
255 | |- include |
||
256 | |- lib |
||
257 | |- man |
||
258 | |- manifest |
||
259 | |||
260 | ---- |
||
19104 | jghali | 261 | Libxml2 / iconv: |
16720 | jghali | 262 | |
19104 | jghali | 263 | Download libxml2 and icon win32 binaries from following address: |
16720 | jghali | 264 | |
265 | ftp://ftp.zlatkovic.com/libxml/ |
||
266 | |||
267 | Note that these binaries do not use the same runtime |
||
268 | as the rest of the binaries we're building. Feel free to |
||
269 | rebuild libxml to fix this, but in practice it doesn't |
||
270 | matter since we never pass a FILE* nor do we allocate memory |
||
271 | to be deallocated in libxml or vice versa. |
||
272 | |||
273 | Remember that iconv from the same package must be on the |
||
274 | header search path too. If in doubt, just drop iconv.h |
||
275 | into the libxml tree. |
||
276 | |||
277 | --- |
||
19104 | jghali | 278 | Podofo: |
16720 | jghali | 279 | |
19104 | jghali | 280 | Podofo sources can be downloaded from podofo.sourceforge.net. At the moment |
281 | those instructions are written, the recommended version to build Scribus on |
||
16768 | jghali | 282 | Windows is one of the 0.8.x series. |
16720 | jghali | 283 | |
284 | Follow instructions in sources packages to build Podofo. |
||
285 | |||
19104 | jghali | 286 | You will however probably find easier to directly download packages with a |
287 | Visual Studio 2008 solution ready to build. You can find required file at |
||
288 | following address: |
||
16720 | jghali | 289 | |
290 | https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/ |
||
291 | |||
16768 | jghali | 292 | Download the scribus-podofo-*.zip archive. Unpack it. |
16720 | jghali | 293 | |
19104 | jghali | 294 | If present, open the PoDoFoLib-build.vsprops file located in podofo-whatever |
295 | directory and set all build variables according to your system. Then open the |
||
296 | podofo solution located in same directory and build Debug and Release configurations |
||
16768 | jghali | 297 | of PoDoFoLib project. |
16720 | jghali | 298 | |
19104 | jghali | 299 | Note: freetype, libtiff and libjpeg must have been installed and if |
16720 | jghali | 300 | necessary compiled before attempting to build podofo. |
301 | |||
302 | --- |
||
19104 | jghali | 303 | Poppler: |
16768 | jghali | 304 | |
305 | Poppler sources can be downloaded http://poppler.freedesktop.org. At the moment |
||
306 | those instruction are written, the only version known to work with scribus is 0.17.1. |
||
307 | |||
19104 | jghali | 308 | As Poppler is a bit tricky to build on Windows, you will however probably find easier |
309 | to directly download a ready to build package for Visual Studio 2008. You can find |
||
310 | required file at following address: |
||
16768 | jghali | 311 | |
312 | https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/ |
||
313 | |||
314 | Download the scribus-poppler-*.zip archive. Unpack it. |
||
315 | |||
316 | Open the poppler-build.vsprops file located in poppler-whatever\win32 directory and set |
||
19104 | jghali | 317 | all build variables according to your system. Then open the poppler.sln solution and |
16768 | jghali | 318 | buid Debug-static and Release-static configurations. |
319 | |||
19104 | jghali | 320 | Note: freetype, libtiff and libjpeg must have been installed and if |
16768 | jghali | 321 | necessary compiled before attempting to build poppler. |
322 | |||
323 | --- |
||
19104 | jghali | 324 | Python: |
16720 | jghali | 325 | |
326 | Download latest Python 2.7 binaries (and only 2.7, 3.x will not work). |
||
327 | Unpack or install. |
||
328 | Copy the python27.lib file in python 'libs' directory to python27_d.lib |
||
329 | |||
330 | Open pyconfig.h in python include directory |
||
331 | |||
19104 | jghali | 332 | Replace those lines: |
16720 | jghali | 333 | |
334 | #ifdef _DEBUG |
||
335 | # define Py_DEBUG |
||
336 | #endif |
||
337 | |||
19104 | jghali | 338 | by: |
16720 | jghali | 339 | |
340 | #ifdef _DEBUG |
||
341 | # //define Py_DEBUG |
||
342 | #endif |