Difference between revisions of "Compiling Inkscape on Windows 32-bit"

From Inkscape Wiki
Jump to navigation Jump to search
m (→‎Inkscape under Windows: Cleaned up and added notes for clarification)
Line 3: Line 3:
 
=== Inkscape under Windows ===
 
=== Inkscape under Windows ===
  
Ishmal provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/. You better check there the last version, but as of February 28th 2008 those are:
+
Inkscape was originally written for Linux, but has been ported to other platforms, including Windows, through the work of a number of dedicated developers.
 +
 
 +
You can get pre-built binaries of the Windows releases (both stable and development) from the [http://www.inkscape.org/download/?lang=en Inkscape download page]
 +
 
 +
 
 +
=== Building Your Own Binary ===
 +
As well as getting a pre-built binary, you can also build your own. You may do this for fun, to learn about programming, or to help test or improve Inkscape.
 +
 
 +
Several steps are required to build your own binary, as follows;
 +
* You need to download the source code
 +
* You will need to download and install the MinGW compiler
 +
* You will also need the supporting libraries used by Inkscape
 +
* If you wish to apply patches for bug-testing, you will also need to download the patch utility
 +
 
 +
 
 +
==== Getting The Inkscape Source ====
 +
 
 +
Ishmal provides a snapshot of the latest SVN source on his website - http://inkscape.modevia.com/svn-snap/
 +
 
 +
Download the latest file (or earlier if testing bugs) and decompress it. It does not need to be in a particular place, so put it wherever is convenient for you.
 +
 
 +
 
 +
==== Getting The Compiler & Libraries ====
 +
 
 +
Ishmal also provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/.
 +
 
 +
Before you download, check for the last versions. As of February 28th 2008 those are:
 
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z
 
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z
 
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080226.7z
 
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080226.7z
Line 11: Line 37:
 
* other libraries C:\devlibs (referenced in build.xml used by buildtool)
 
* other libraries C:\devlibs (referenced in build.xml used by buildtool)
  
Now you step into the Inkscape source directory:
+
 
 +
==== Patching The Source Code ====
 +
More information soon
 +
 
 +
 
 +
==== Building The Binary ====
 +
 
 +
You will need to open a command window (DOS prompt) to build the binary. Go to the Start Menu, select Run, and then type command (or cmd). Now you need to step into the Inkscape source directory:
 
     ...\> cd ...\inkscape
 
     ...\> cd ...\inkscape
set up the environment variables
+
 
 +
Ishmal's SVN snapshots include some convenient tools to help Windows users build a binary. Firstly run the batch file that sets up the MinGW environment variables
 
     ...\> mingwenv.bat
 
     ...\> mingwenv.bat
build the magic make replacement:
+
 
 +
Now, build the magic make replacement:
 
     ...\> g++ buildtool.cpp -o btool
 
     ...\> g++ buildtool.cpp -o btool
 
or, if you get errors about gettimeofday:
 
or, if you get errors about gettimeofday:
 
     ...\> g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool
 
     ...\> g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool
start the build proccess:
+
 
 +
 
 +
Now you can start the build proccess by simply running btool.
 
     ...\> btool
 
     ...\> btool
Now you should have you fresh Inkscape in the ...\Inkscape\Inkscape directory.
 
  
 +
If everything went well, you should now have you fresh Inkscape in the ...\Inkscape\Inkscape directory.
 +
 +
 +
==== Dealing With Build Errors ====
 +
More information soon
 +
 +
 +
==== For more information ====
 
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,
 
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,
 
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a
 
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a
Line 30: Line 74:
  
 
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).
 
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).
 
There is also a [[Win32 installer]]
 
  
 
=== Create the Setup package for Win32 ===
 
=== Create the Setup package for Win32 ===

Revision as of 01:41, 13 March 2008

See the Win32 Build ticket for some info.

Inkscape under Windows

Inkscape was originally written for Linux, but has been ported to other platforms, including Windows, through the work of a number of dedicated developers.

You can get pre-built binaries of the Windows releases (both stable and development) from the Inkscape download page


Building Your Own Binary

As well as getting a pre-built binary, you can also build your own. You may do this for fun, to learn about programming, or to help test or improve Inkscape.

Several steps are required to build your own binary, as follows;

  • You need to download the source code
  • You will need to download and install the MinGW compiler
  • You will also need the supporting libraries used by Inkscape
  • If you wish to apply patches for bug-testing, you will also need to download the patch utility


Getting The Inkscape Source

Ishmal provides a snapshot of the latest SVN source on his website - http://inkscape.modevia.com/svn-snap/

Download the latest file (or earlier if testing bugs) and decompress it. It does not need to be in a particular place, so put it wherever is convenient for you.


Getting The Compiler & Libraries

Ishmal also provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/.

Before you download, check for the last versions. As of February 28th 2008 those are:

The configuration files expect the packages in specific directories:

  • the compiler C:\MinGW (referenced by mingwenv.bat)
  • other libraries C:\devlibs (referenced in build.xml used by buildtool)


Patching The Source Code

More information soon


Building The Binary

You will need to open a command window (DOS prompt) to build the binary. Go to the Start Menu, select Run, and then type command (or cmd). Now you need to step into the Inkscape source directory:

   ...\> cd ...\inkscape

Ishmal's SVN snapshots include some convenient tools to help Windows users build a binary. Firstly run the batch file that sets up the MinGW environment variables

   ...\> mingwenv.bat

Now, build the magic make replacement:

   ...\> g++ buildtool.cpp -o btool

or, if you get errors about gettimeofday:

   ...\> g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool


Now you can start the build proccess by simply running btool.

   ...\> btool

If everything went well, you should now have you fresh Inkscape in the ...\Inkscape\Inkscape directory.


Dealing With Build Errors

More information soon


For more information

We will update this page soon with information on how to build Inkscape on the Win32 platform. In the meantime, there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a cross-compiler on Linux, at

http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html

(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).

Create the Setup package for Win32

To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net . You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory. Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)


A Note from Jon about UNICODE on Win32

Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T. If it is used, it results in a binary that can not be run on Windows 95/98/ME. It is more of a "Windows NT only" define.

Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x/ME 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.

To help developers, Microsoft finally made public their API they had been using. It's "The Microsoft Layer for Unicode".

Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98/ME with no problems years before they released that.

Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x/ME. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x/ME). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.

So, some general guidelines are:

  • Never define _UNICODE
  • Don't use _T
  • Don't use TCHAR
  • Don't use wchar_t
  • Use some explicit 16-bit type for characters/strings

So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land.

The result? A single binary that executes properly on both Win9X/ME and WinNT/2K/XP, including full and proper font and filename support.

And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.

-- Jon C

SVN and Windows

If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend TortoiseSVN. It has the SSH stuff built into it so you don't have to mess about with putty, and it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands. get it from http://tortoisesvn.net/

John