Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 19748 → Rev 19749

/branches/Version14x/Scribus/BUILDING_win32_msvc.txt
1,48 → 1,103
BUILDING SCRIBUS ON MICROSOFT WINDOWS WITH MICROSOFT VISUAL STUDIO
==================================================================
 
HOW TO DO THE BUILD
===================
 
This documentation is minimal and assume you have a decent knowledge of
Microsoft Visual Studio. No help regarding use of Visual Studio and
related tools will be provided.
 
You will need:
- Microsoft Windows XP, Vista or 7
- Microsoft Visual Studio 2008 or Visual C++ Express Edition 2008
- A recent Qt release built with Visual Studio 2008 (version >= 4.6)
- Cairo sources from cairographics.org (version >= 1.8.0)
- Pixman sources from cairographics.org (version >= 0.12.0)
- Boost from www.boost.org (version >= 1.35.0)
- Freetype sources from freetype.org (version >= 2.4.0)
- Libhunspell sources from http://hunspell.sourceforge.net/ (version >= 1.3.2)
- Libjpeg win32 libs and binaries from the GnuWin32 project
- Libtiff win32 libs and binaries from the GnuWin32 project
- Libxml2 win32 binaries from the Libxml project
- LittleCMS sources from www.littlecms.com (version >= 2.1)
- PoDoFo sources from podofo.sourceforge.net (version >= 0.8.x)
- A Python 2.7 Windows binary build.
For debug builds, you'll need a release that contains the python27_d.dll .
- Microsoft Windows XP, Vista, 7 or a more recent version
- Microsoft Visual Studio 2008 (for 32bit build) or Microsoft Visual Studio 2012 (for 32/64bit build)
- A recent Qt release built with corresponding Visual Studio version (version >= 4.6)
- Common libraries kit downloaded from http://sourceforge.net/projects/scribus/files/scribus-libs/
- Scribus 14x libraries kit downloaded from http://sourceforge.net/projects/scribus/files/scribus-libs/
It is possible to use Microsoft Visual Studio 2008 or 2012 Express editions. However in the case of Microsoft
Visual Studio 2008 Express, SP1 is required in order to build the dependency archive.
 
Some more details can be found below in the section entitled GETTING DEPENDENCIES.
GETTING DEPENDENCIES
====================
 
After having installed all dependencies, open Scribus-build-props.vsprops files located
in Scribus\win32\vc9 and update the dependency paths to match your system.
This is a quick and dirty set of notes that will be filled out once everything's
verified as correct and working. It asssumes that you'll be building all your
dependencies at a single root, like C:\Developer. The root *MUST NOT* have spaces
in its path.
 
Open the Visual Studio solution located in Scribus\win32\vc9 and start building. The *-cairo
configurations will build Scribus with cairo renderer. The *-arthur configurations will buid
Scribus using qt arthur renderer. Note : official Scribus builds use cairo as render.
 
After building completed, you will find executables in a Scribus-builds\scribus-vc9-*\scribus
directory located in same directory as Scribus sources. Those executables will not function yet.
Scribus resources must be copied from source directory to install directory first.
Building Qt:
------------
 
In order to do that, create a batch script and copy/paste following lines :
Download the latest Qt 4 release from http://download.qt-project.org/official_releases/qt/4.8/ and unpack it to C:\Developer.
 
Start a command line and import your Visual Studio environment:
\path\to\visual\studio\VC\vcvarsall.bat x86 (for 32bit build)
or
\path\to\visual\studio\VC\vcvarsall.bat x86_amd64 (for 64bit build)
 
Note: with Visual Studio Express Editions, it is not possible to compile in 64bit mode prior to Visual Studio 2012.
 
now cd to C:\Developer\qt-everywhere-whatever and run configure:
- Visuak Studio 2008 : configure -platform win32-msvc2008 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools
- Visuak Studio 2012 : configure -platform win32-msvc2012 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools
 
After configure has finished its work, run nmake.
 
You can remove the -no-webkit -no-script -noscripttools options if you desire to make a complete build of Qt. Be aware however that
Qt build times will be much (much) increased without additional benefit for Scribus.
 
After Qt has finished building, you can type following command to get rid of temporary objects:
del *.obj *.ilk /s
 
Building 3rd party libraries:
-----------------------------
 
Archives with ready-to-build solutions for scribus dependencies have been made available on sourceforge. These archives can be used to
compile all dependencies necessary for Scribus.
 
Two different archives are needed :
- commone libraries for 14x and trunk : contains boost and python, no compilation is required here
- Scribus 14x specified libraries : libraries used to compile current Scribus 1.4.x releases
 
Common libraries and version specific libraries can be downloaded on Sourceforge from this directory:
http://sourceforge.net/projects/scribus/files/scribus-libs/
 
Common libraries are named with following scheme : scribus-commmon-libs-XXXXXX where XXXXX represents a date.
Archives with version specific libraries are names using following scheme scribus-14x-libs-msvcXXXX-XXXXXX where :
- msvcXXXX represent the Visual Studio version needed to compile provided Visual Studio solution
- XXXXXX is a serie of number representing a date.
 
For building 14x, archives are provided for Visual Studio 2008 and Visual Studio 2012. The Visual Studio 2008 archives allows to build
bit libraries targetted at Windows 2000 SP4, Windows XP and more recent Windows systems. The Visual Studio 12012 archives allows to build
libraries for 32bit and 64bit platforms. Produced binaries can be used on Windows Vista and up. If you plan to use a more recent
Visual Studio version than Visual Studio 2012, download the archives for Visual Studio 2012.
 
Once you downloaded the two appropriate archives :
- decompress them in the *same* directory.
- open the visual studio solution (*.sln) located in the scribus-1.4.x-libs-* directory
- build debug and release configurations for all platforms (Win32 and/or x64) you plan to execute scribus on
 
BUILDING SCRIBUS
====================
 
After having installed all dependencies:
- msvc 2008 : open Scribus-build-props.vsprops files located in Scribus\win32\vc9 in a text editor
- msvc 2012 : open Scribus-build-props.props files located in Scribus\win32\vc11 in a text editor
Update the dependency paths to match your system.
 
Open the Visual Studio solution located in same directoy and start building.
 
After building completed, you will find executables in a Scribus-builds\scribus-$(configuration)-$(platform)-*\
directory, located in same directory as Scribus sources. Those executables will not function yet. Scribus resources and
dependencies must be copied from to install directory first.
 
INSTALLING RESOURCES AND DEPENDENCIES
=====================================
 
To copy resources to build directory, create a batch script and copy/paste following lines :
 
set SCRIBUS_SRC_PATH=.\Scribus
set SCRIBUS_BUILD_ROOT=.\Scribus-builds
set SCRIBUS_INSTALL_PATH=.\Scribus-builds\scribus-vc9-debug-cairo
set SCRIBUS_INSTALL_PATH=.\Scribus-builds\scribus-debug-cairo-vc9
 
copy %SCRIBUS_SRC_PATH%\AUTHORS %SCRIBUS_INSTALL_PATH%\share\doc
copy %SCRIBUS_SRC_PATH%\COPYING %SCRIBUS_INSTALL_PATH%\share\doc
68,248 → 123,23
 
Adjust SCRIBUS_SRC_PATH, SCRIBUS_BUILD_ROOT and SCRIBUS_INSTALL_PATH as needed and run batch script.
 
Now copy the DLLs from the zlib, libpng, qt, lcms, freetype, libtiff, libjpeg,
libxml, and podofo directories into the Scribus install directory (where
scribus.exe is). Copy also the Dlls, lib and tcl directories from your python
install to scribus install path. Finally copy python27.dll. Scribus should now run.
To install common libs:
- open the scribus-common-libs directory where you uncompressed 14x/trunk libs
- open the copy-dlls-to-14x-build-dir.bat file from scribus-common-libs directory in a text editor
- modify the SCRIBUS_DEBUG_BUILD_*, SCRIBUS_RELEASE_BUILD_* and PYTHON_DIR_* variables appropriately
- execute batch file to copy appropriate files to build directory
 
Crash problems at runtime? Verify that Qt, freetype, lcms, and Scribus all use
the same runtime, and that all were built for debugging or all for release not
a mixture of the two. Windows does not permit you to mix debug and release
executables like other platforms do.
To install version specific libs:
- open the scribus-14x-libs-msvc* directory where you uncompressed Scribus 14x libs
- open the copy-*-dlls-to-build-dir.bat file in a text editor
- modify the SCRIBUS_DEBUG_BUILD and SCRIBUS_RELEASE_BUILD to appropriate paths (note: enclose path in double quotes if those contains spaces)
- execute batch file to copy appropriate dlls to build directory
Finally copy Qt DLLs to build directory and Qt plugins directory to "qtplugins" directory.
Scribus should now run.
 
Crash problems at runtime? Verify that Scribus and all its dependencies use the same runtime, and that all were built
for debug or release configurations and not a mixture of the two. On Windows, it is strictly not recommended to mix
debug and release binaries. Doing so is not supported and will usually trigger unpredictable issues.
 
You can use depends.exe to check that the runtimes match.
 
GETTING DEPENDENCIES
====================
 
This is a quick and dirty set of notes that will be filled out once everything's
verified as correct and working. It asssumes that you'll be building all your
dependencies at a single root, like C:\Developer. The root *MUST* not have spaces
in its path.
 
----
Qt:
 
Download the latest qt >= 4.6 snapshot from ftp://ftp.qt.nokia.com/qt/source
and unpack it to C:\Developer.
 
Start a command line and import your Visual Studio environment:
\path\to\visual\studio\VC\vcvarsall.bat
 
now cd to C:\Developer\qt-everywhere-whatever and run configure:
configure -debug-and-release -fast -no-qt3support -platform win32-msvc2008
 
and nmake.
 
----
Boost:
 
Download the latest boost libraries from www.boost.org. Unpack, no need to compile
anything as Scribus only use functionnalities embedded in C++ templates.
 
----
Zlib and LibPNG :
 
Zlib and LibPNG are both embedded in the QtCore library with symbols exported
for public use . If you're using a Qt binary redist you may still need to
download these libraries sources for their headers. In most cases your
copy of Qt will contain a directory called %QTDIR%\src\3rdparty\zlib
(and one for libpng), in which case you need not worry about these libraries at
all.
 
---
Cairo and Pixman
 
Cairo and pixman sources can be downloaded from cairographics.org at following address :
 
http://cairographics.org/releases/
 
Follow instructions in sources packages to build pixman, then cairo.
 
You will however probably find easier to directly download packages with Visual Studio 2008
solutions ready to build. You can find required file at following address :
 
https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/
 
Download the both scribus-pixman-* and scribus-cairo-* zip files. Unpack them.
 
Build pixman first : open the PixManWin32 solution located in pixman-whatever\win32
directory and build Debug and Release configurations.
 
Build cairo afterwards : open the CairoWin32 solution located in cairo-whatever\win32
directory and build Debug and Release configurations.
 
----
Freetype:
 
Unpack freetype
 
Open include\freetype\config\ftoption.h and replace the DLL export compilation section
by following lines :
 
#ifndef __GNUC__
# define __DLL_IMPORT__ __declspec(dllimport)
# define __DLL_EXPORT__ __declspec(dllexport)
#else
# define __DLL_IMPORT__ __attribute__((dllimport)) extern
# define __DLL_EXPORT__ __attribute__((dllexport)) extern
#endif
 
#if (defined __WIN32__) || (defined _WIN32)
# ifdef BUILD_FREETYPE2_DLL
# define FREETYPE2_DLL_IMPEXP __DLL_EXPORT__
# elif defined(FREETYPE2_STATIC)
# define FREETYPE2_DLL_IMPEXP
# elif defined (USE_FREETYPE2_DLL)
# define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__
# elif defined (USE_FREETYPE2_STATIC)
# define FREETYPE2_DLL_IMPEXP
# else /* assume USE_FREETYPE2_DLL */
# define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__
# endif
#else /* __WIN32__ */
# define FREETYPE2_DLL_IMPEXP
#endif
 
#define FT_EXPORT(x) FREETYPE2_DLL_IMPEXP x
#define FT_BASE(x) FREETYPE2_DLL_IMPEXP x
 
Open builds\win32\vc2008
Build "Release Multithreaded" and "Debug Multithreaded"
 
At the end of the process you must have those files in your freetype lib
directory :
- freetype.dll
- freetype.lib
- freetypeD.dll
- freetypeD.lib
 
----
Libhunspell :
 
You will probably find easier to directly download packages with Visual
Studio 2008 solutions ready to build. You can find required file at
following address :
 
https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/
 
Download the scribus-hunspell-*.zip archive. Unpack it.
 
Open the visual studio solution located in hunspell-whatever/src/win-api directory and build
Debug and Release configurations of Libhunspell project.
 
----
Libjpeg :
 
While Qt also bundles libjpeg, it's not linked to the main DLL but rather a plugin.
As such, we need to link to it directly.
 
Get jpeg libraries from GnuWin32 project on Sourceforge :
 
http://sourceforge.net/projects/gnuwin32/files/jpeg/6b-3/jpeg-6b-3-lib.zip/download
 
Unpack in C:\Developer. After unpacking you directory layout must be as following :
 
C:\Developer
|- libjpeg-6b-3
|- include
|- lib
|- manifest
 
----
LittleCMS :
 
Get lcms sources (>= 2.1). Although it is possible to build Scribus with lcms 1,
you can only do so without modifying lcms sources with lcms >= 2.1.
We will only describe here instructions related to lcms >= 2.1.
 
Build using VC project in Projects\VC2008 dir. Modify projects if necessary so
as to make them use the multithreaded dll runtim libraries.
Build the static libraries in debug and release configurations.
 
After building you must have a lcms2_static.lib and lcms2_staticd.lib in
your lcms source directory. If this is not the case modify projects as necessary.
 
----
Libtiff
 
While Qt also bundles libtiff, it's not linked to the main DLL but rather a plugin.
As such, we need to link to it directly.
 
Download libtiff libraries, binaries and dependency packages from GnuWin32 project
on sourceforge :
 
http://sourceforge.net/projects/gnuwin32/files/tiff/3.8.2/
 
Unpack them in C:\Developer. After unpacking you directory layout must be as following :
 
C:\Developer
|- libtiff-3.8.2
|- bin
|- contrib
|- include
|- lib
|- man
|- manifest
 
----
Libxml2 / iconv :
 
Download libxml2 and icon win32 binaries from following address :
 
ftp://ftp.zlatkovic.com/libxml/
 
Note that these binaries do not use the same runtime
as the rest of the binaries we're building. Feel free to
rebuild libxml to fix this, but in practice it doesn't
matter since we never pass a FILE* nor do we allocate memory
to be deallocated in libxml or vice versa.
 
Remember that iconv from the same package must be on the
header search path too. If in doubt, just drop iconv.h
into the libxml tree.
 
---
Podofo :
 
Podofo sources can be downloaded from podofo.sourceforge.net. At the moment
those instructions are written, the recommended version to build Scribus on
Windows is one of the 0.8.x series.
 
Follow instructions in sources packages to build Podofo.
 
You will however probably find easier to directly download packages with Visual
Studio 2008 solutions ready to build. You can find required file at
following address :
 
https://sourceforge.net/projects/scribus/files/scribus-libs/win32-msvc2008/
 
Download the scribus-podofo-*.zip archive. Unpack it.
 
Open the podofo solution located in podofo-whatever directory and build
Debug and Release configurations of PoDoFoLib project.
 
Note : freetype, libtiff and libjpeg must have been installed and if
necessary compiled before attempting to build podofo.
 
---
Python :
 
Download latest Python 2.7 binaries (and only 2.7, 3.x will not work).
Unpack or install.
Copy the python27.lib file in python 'libs' directory to python27_d.lib
 
Open pyconfig.h in python include directory
 
Replace those lines :
 
#ifdef _DEBUG
# define Py_DEBUG
#endif
 
by :
 
#ifdef _DEBUG
# //define Py_DEBUG
#endif