Building Scribus on Windows
This page is a work in progress, so be patient until enough information is accumulated to allow you to proceed -- if you feel like going down this difficult path.
There is a good chance you don't want to do this, given its complexity. Since this nonetheless is a recurring question, this page will attempt to give some guidance and explanation of the process.
Requirements
On a personal level:
- Perseverance
- A high tolerance of failure -- your initial attempts a compiling are almost certain to fail, so you will need to gradually figure out whether there are missing pieces or what needs to be modified in the source for the Windows environment.
Aside from the Scribus source, there are components that you will need on your Windows system in order to begin to tackle this project.
- A compiler
- GDI+ support
from the Scribus Archives (Jean Ghali):
Personally I use Visual C++ Express Edition for compiling 1.3.5svn and have no experience with MingW and Msys. However, here are some elements of an answer. On Windows, Scribus uses GDI+ for printing to GDI printers, mainly for transparency support. As far as I know, MinGW has currently no support for GDI+ library, so compiling with GDI+ support is a bit compromised... There is always some code which uses pure GDI calls, but that code is currently unmaintained and honestly I don't know if it still works.
In all cases, the main task would be to adapt the build environment. Since 1.3.5svn, we have dropped autotools support and switched to CMake. On Windows, CMake can produce visual studio solutions as well as MinGW make files. However there are still some linuxisms in our cmake files which prevent to do so. So one should first remove them. If one would do the work, the team would be happy to integrate the result in svn.
Hot News!
From Scribus List
Hi folks
There have been repeated questions here about how to build Scribus for Windows, and we've never been able to give a particularly satisfactory answer because it's involved a non-public version of Qt, some hand-built Visual Studio projects and a bit of fiddling.
Thanks to Jean Ghali's great work on the win32 port, TrollTech's recent decision to support Qt/Win Open Source with Visual Studio, and some recent enhancements to the CMake build system used in Scribus, it's now much easier to build Scribus for Windows. You can do a build using only the main svn trunk source distribution and unmodified library sources. Cairo is still rather tricky, but Arthur works out of the box and with a canned Cairo library cairo is similarly simple to use with Scribus.
This support is only in svn trunk. It will never be backported to 1.3.3.x or 1.3.4 because these versions do not use Qt 4 and there is no stable public version of Qt 3 for Windows. As such, it's not much good for building a copy of Scribus that you'll want to use for real work just yet. On the other hand, if you want to get into Scribus development and contribute but you're only used to working on Windows with Visual Studio or your interest is in improving win32 specific functionality, it might be an opportunity to get involved.
To get started, you'll need to check out scribus svn trunk (see www.scribus.net) and read BUILDING_win32.txt . These instructions are ... rough ... but should cover the basics if you're used to working on Windows. They will be improved.
If you decide to give it a go and have problems, consider dropping in on IRC or asking for help here. Just remember to include FULL ERROR MESSAGES, commands run, Visual Studio version, etc if you do ask for help.
-- Craig Ringer
BUILDING_win32.txt
from revision 10823 -- if you build your own check this file for changes after you download
BUILDING SCRIBUS ON MICROSOFT WINDOWS ==================== 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.3 snapshot for windows and unpack it to C:\Developer . Don't get the "all" snapshot, it lacks configure.exe and can't easily be built on Windows. Start a command line and import your Visual Studio environment: \path\to\visual\studio\VC\vcvarsall.bat \path\to\platform\sdk\setenv.cmd now cd to C:\Developer\Qt-win-whatever and run configure: configure -debug-and-release -fast -no-qt3support -platform win32-msvc2005 and nmake. ---- 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. ---- jpeg: 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 sources from jig.org . Unpack to your libraries directory. Now, in a command prompt: cd copy Makefile.vc Makefile copy jconfig.vc jconfig.h nmake (you might have to use vcvars.bat from vc and setvars.bat from the platform sdk) ---- lcms: Get lcms sources. Build using VC project in Projects dir. Build the DLL ("lcmsdll" project) in debug and release configurations. Now modify lcms.h and remove: #define unlink _unlink You must modify lcms.h to prevent it from defining `cdecl'. [TODO: other changes] [ TODO: line numbers / patch ]. This is only required to use the header with Scribus; it's Ok to use a library built without these changes. ---- 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 sources from libtiff.org and unpack them. in a vcvars/setenv window: set INCLUDE=%INCLUDE%;\path\to\jpeg\include;\path\to\zlib\include set LIB=%LIB%;\path\to\jpeg\lib;\path\to\zlib\lib cd %LIBTIFFDIR%\libtiff nmake /nologo /f Makefile.vc libtiff.lib Since we're building libtiff as a static library, there's no need to worry about which runtime it's linked to. You can build the DLL if you like (you need to specify LIBS= to include Qt [for zlib] and libjpeg) but the static library should be fine. ---- Freetype: unpack freetype open builds\win32\visualc upgrade build "Release Multithreaded" and "Debug Multithreaded" Note that if you're not using Freetype 2.3.5 exactly, you will have to change the freetype library names passed in the build.cmd script. ---- libxml: download win32 binaries from libxml.org, unpack. 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.