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 |