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

From Inkscape Wiki
Jump to navigation Jump to search
(update links to archived 32-bit instructions)
 
(27 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This is a work in progress. Please spend a few minutes improving this wiki page, thank you very very much!
+
{{Note|The information on this page is outdated. Please see '''[[Compiling Inkscape on Windows]]''' for the updated instructions.}}
  
== MinGW ==
+
'''For 32 bit: see [[Compiling Inkscape on Windows 32-bit]]'''
Get MinGW 64-bit from here:
 
[http://mingw-w64.sourceforge.net/index.php MinGW-w64 on Sourceforge], taking the package from the Mingw-builds Project.
 
  
The version you need is POSIX with SJLJ exception handling, because inkscape-devlibs64 has been compiled with SJLJ exception handling, and POSIX is needed for C++11 thread capabilities.
+
----
  
Direct link to what I got: [http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.0/threads-posix/sjlj/x86_64-4.9.0-release-posix-sjlj-rt_v3-rev1.7z/download x86_64-4.9.0-release-posix-sjlj-rt_v3-rev1.7z]
+
Compiling Inkscape on Windows 64-bit works similar to [[Compiling Inkscape on Windows 32-bit|compiling Inkscape on Windows 32-bit]] where you can find additional information.
  
== Devlibs 64 ==
+
This page only describes the basic steps that are required while highlighting the differences compared to a 32-bit build.
  
Checkout lp:inkscape-devlibs64 into, e.g., c:\devlibs64.
+
== Requirements ==
 +
=== MinGW-w64 ===
  
Also see: [[Inkscape Devlibs 64-bit]]
+
Get [http://mingw-w64.org/ MinGW-w64] which contains the necessary GNU developer tools to build Inkscape on Windows.
 +
 
 +
You have to download a version that is configured for building native win64 applications with ''win32 threading model'' and ''SEH exception handling'', to ensure compatibility with the inkscape-devlibs64.
 +
 
 +
A matching build based on GCC 5.3 can be downloaded [https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.3.0/threads-win32/seh/ here]. The exact version used for building the inkscape-devlibs64 is [https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.3.0/threads-win32/seh/x86_64-5.3.0-release-win32-seh-rt_v4-rev0.7z/download MinGW-w64 x86_64-5.3.0-release-win32-seh-rt_v4-rev0.7z].
 +
 
 +
=== Development libraries for Windows 64-bit ===
 +
 
 +
Get the [https://code.launchpad.net/inkscape-devlibs64 inkscape-devlibs64] which include pre-compiled binaries of all Inkscape dependencies.
 +
 
 +
To checkout via Bazaar use the command
 +
<pre>bzr checkout --lightweight lp:inkscape-devlibs64 C:\devlibs64</pre>
 +
The <code>--lightweight</code> switch ensures that you only have to download the latest version of all binaries, <code>C:\devlibs64</code> is the folder you want them to be downloaded to.
 +
 
 +
See also [[Inkscape Devlibs 64-bit]] ''(only relevant if you want to update the development libraries)''
 +
 
 +
=== Inkscape source code ===
 +
 
 +
Get the [https://launchpad.net/inkscape Inkscape source code] from launchpad
 +
 
 +
To checkout via Bazaar use the command
 +
<pre>bzr checkout lp:inkscape C:\inkscape</pre>
 +
 
 +
See also additional information on [[Compiling_Inkscape_on_Windows#Obtaining_Inkscape_source_code|obtaining Inkscape source code]] and [[Working with Bazaar|working with Bazaar]].
 +
 
 +
=== CMake ===
 +
 
 +
CMake is a Cross-Platform buildsystem generator similar to autotools. It generates '''makefiles''' to be processed by '''make'''.
 +
Get CMake from the [https://cmake.org/ official website cmake.org]. As of writing [https://cmake.org/files/v3.5/cmake-3.5.2-win32-x86.msi version 3.5.2] is the most recent version.
  
 
== Building ==
 
== Building ==
  
set the paths correctly in mingwenv.bat! Specifically, I have:
+
=== Environment variables ===
    IF "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs64
+
Edit the file <code>mingwenv.bat</code> in the root directory of the Inkscape source to match you local paths. Most importantly the two lines:
    IF "%MINGW_PATH%"=="" set MINGW_PATH=C:\mingw64\mingw64_posix
+
 
 +
<pre>
 +
# Path to the Inkscape development libraries.
 +
if "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs64
 +
 
 +
# Path to the MinGW installation. Note: MinGW does not work with white spaces in the path name.
 +
if "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw64
 +
</pre>
 +
 
 +
should point to the folders containing MinGW-w64 and the inkscape-devlibs64.
 +
 
 +
Whenever you want to build Inkscape open a command prompt (<code>cmd.exe</code>), change into the root directory of the Inkscape source and set the environment variables with the following command:
 +
 
 +
<pre>
 +
mingwenv.bat
 +
</pre>
 +
 
 +
=== Compiling Inkscape using CMake ===
 +
 
 +
''Note: To significantly reduce the time needed for incremental rebuilds consider [[CMake#Using CMake with Ninja to build Inkscape|using CMake in combination with Ninja]].''
 +
 
 +
Go to the directory containing your Inkscape source and create the build output directory. In example:
 +
 
 +
<pre>
 +
mkdir build
 +
cd build
 +
</pre>
 +
 
 +
You can also create an out of source build anywhere else in your file system. Just make sure that you pass the correct path to the source code directory in the next step. Create the makefiles using CMake:
 +
 
 +
<pre>
 +
# Pass the path to the source code directory as a parameter.
 +
cmake -G "MinGW Makefiles" ..
 +
</pre>
 +
 
 +
Start the build proccess. The compiled Inkscape.exe will be in bin directory afterwards:
 +
 
 +
<pre>
 +
# 2 is the number of parallel threads to use for compiling. Increase the number to utiliize more of your available CPU cores.
 +
mingw32-make -j 2
 +
</pre>
 +
 
 +
Collect all the needed files and create a selfcontaing directory in  <code>./build/inkscape/</code>:
 +
 
 +
<pre>
 +
mingw32-make install
 +
</pre>
 +
 
 +
As cmake hides the actual compiler calls, here is a way how to see what make is doing.
 +
 
 +
<pre>
 +
mingw32-make VERBOSE=1 -j 2
 +
</pre>
 +
 
 +
; If something goes wrong
 +
Execute the following commands from the <code>build</code> directory
 +
<pre>
 +
rm -r CMakeFiles
 +
rm CMakeCache.txt
 +
</pre>
 +
and start with running CMake (see above) again.
 +
 
 +
; If something goes very wrong
 +
Remove the <code>build</code> directory and start over.
 +
 
 +
=== Compiling Inkscape using btool (deprecated) ===
 +
 
 +
''Note: This method was the default up to Inkscape 0.91. It still works in 0.92 but compiling using CMake [[#Compiling Inkscape using CMake|as described above]] is the preferred option.''
 +
 
 +
Compile <code>btool</code> (the command line tool that handles the actual build) using
 +
<pre>
 +
g++ buildtool.cpp -o btool -fopenmp
 +
</pre>
 +
 
 +
Use <code>btool</code> to compile Inkscape compile  and create the distribution directory:
  
build using buildtool as usual, but with build-x64.xml:
+
<pre>
    btool -file build-x64.xml
+
btool -file build-x64.xml -j 2
 +
</pre>
  
== Known issues ==
+
The file <code>build-x64.xml</code> contains the necessary instructions for creating a standard 64-bit build.<br>
 +
If you want to make a GTK+ 3 build use <code>build-x64-gtk3.xml</code> instead (please note that GTK+ 3 builds are experimental and not ready for production yet).
  
Only thing I know of is that aspell is missing (so no spellcheck available), and that the 64bit version is '''much''' faster than the regular build, probably because of newer libs in devlibs64.
+
The <code>-j</code> switch allows to instruct btool to use multiple parallel threads to speed up compilation (e.g. 2 in the example above).

Latest revision as of 19:04, 25 October 2017

Note: The information on this page is outdated. Please see Compiling Inkscape on Windows for the updated instructions.

For 32 bit: see Compiling Inkscape on Windows 32-bit


Compiling Inkscape on Windows 64-bit works similar to compiling Inkscape on Windows 32-bit where you can find additional information.

This page only describes the basic steps that are required while highlighting the differences compared to a 32-bit build.

Requirements

MinGW-w64

Get MinGW-w64 which contains the necessary GNU developer tools to build Inkscape on Windows.

You have to download a version that is configured for building native win64 applications with win32 threading model and SEH exception handling, to ensure compatibility with the inkscape-devlibs64.

A matching build based on GCC 5.3 can be downloaded here. The exact version used for building the inkscape-devlibs64 is MinGW-w64 x86_64-5.3.0-release-win32-seh-rt_v4-rev0.7z.

Development libraries for Windows 64-bit

Get the inkscape-devlibs64 which include pre-compiled binaries of all Inkscape dependencies.

To checkout via Bazaar use the command

bzr checkout --lightweight lp:inkscape-devlibs64 C:\devlibs64

The --lightweight switch ensures that you only have to download the latest version of all binaries, C:\devlibs64 is the folder you want them to be downloaded to.

See also Inkscape Devlibs 64-bit (only relevant if you want to update the development libraries)

Inkscape source code

Get the Inkscape source code from launchpad

To checkout via Bazaar use the command

bzr checkout lp:inkscape C:\inkscape

See also additional information on obtaining Inkscape source code and working with Bazaar.

CMake

CMake is a Cross-Platform buildsystem generator similar to autotools. It generates makefiles to be processed by make. Get CMake from the official website cmake.org. As of writing version 3.5.2 is the most recent version.

Building

Environment variables

Edit the file mingwenv.bat in the root directory of the Inkscape source to match you local paths. Most importantly the two lines:

# Path to the Inkscape development libraries.
if "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs64

# Path to the MinGW installation. Note: MinGW does not work with white spaces in the path name.
if "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw64

should point to the folders containing MinGW-w64 and the inkscape-devlibs64.

Whenever you want to build Inkscape open a command prompt (cmd.exe), change into the root directory of the Inkscape source and set the environment variables with the following command:

mingwenv.bat

Compiling Inkscape using CMake

Note: To significantly reduce the time needed for incremental rebuilds consider using CMake in combination with Ninja.

Go to the directory containing your Inkscape source and create the build output directory. In example:

mkdir build
cd build

You can also create an out of source build anywhere else in your file system. Just make sure that you pass the correct path to the source code directory in the next step. Create the makefiles using CMake:

# Pass the path to the source code directory as a parameter.
cmake -G "MinGW Makefiles" ..

Start the build proccess. The compiled Inkscape.exe will be in bin directory afterwards:

# 2 is the number of parallel threads to use for compiling. Increase the number to utiliize more of your available CPU cores.
mingw32-make -j 2

Collect all the needed files and create a selfcontaing directory in ./build/inkscape/:

mingw32-make install

As cmake hides the actual compiler calls, here is a way how to see what make is doing.

mingw32-make VERBOSE=1 -j 2
If something goes wrong

Execute the following commands from the build directory

rm -r CMakeFiles
rm CMakeCache.txt

and start with running CMake (see above) again.

If something goes very wrong

Remove the build directory and start over.

Compiling Inkscape using btool (deprecated)

Note: This method was the default up to Inkscape 0.91. It still works in 0.92 but compiling using CMake as described above is the preferred option.

Compile btool (the command line tool that handles the actual build) using

g++ buildtool.cpp -o btool -fopenmp

Use btool to compile Inkscape compile and create the distribution directory:

btool -file build-x64.xml -j 2

The file build-x64.xml contains the necessary instructions for creating a standard 64-bit build.
If you want to make a GTK+ 3 build use build-x64-gtk3.xml instead (please note that GTK+ 3 builds are experimental and not ready for production yet).

The -j switch allows to instruct btool to use multiple parallel threads to speed up compilation (e.g. 2 in the example above).