Difference between revisions of "Compiling Inkscape on Windows with MSYS2"

From Inkscape Wiki
Jump to navigation Jump to search
(→‎Installing MSYS2: Minor clarifications. (Launching MSYS shell, install build dir))
 
(15 intermediate revisions by 5 users not shown)
Line 5: Line 5:
== Installing MSYS2 ==
== Installing MSYS2 ==


[[File:MSYS2 installer labelled.png|600px|thumb|Install MSYS2 '''64'''-bit (aka '''''x86_64'''''). Only use MSYS2 32-bit (aka ''i686'') if you have a 32-bit OS]]
[[File:MSYS2 shells.png|541x541px|thumb|
 
[[File:MSYS2 shells.png|600px|thumb|
<div>Always use the proper shell
<div>Always use the proper shell
<ul>
<ul>
Line 20: Line 18:
To set-up MSYS2 and download the necessary dependencies only two steps are required:
To set-up MSYS2 and download the necessary dependencies only two steps are required:
* '''Step 1''' &mdash; Install MSYS2
* '''Step 1''' &mdash; Install MSYS2
** Download the installer from the [http://www.msys2.org/ MSYS2 homepage] (The MSYS2 64-bit version is recommended on a 64-bit OS, see screenshot to the right. Both versions can compile 32-bit and 64-bit versions of Inkscape).<br/>Start the installation and follow the instructions on screen.
*# Download the installer from the [http://www.msys2.org/ MSYS2 homepage] (a 64-bit version of Windows 7 or later is required to run MSYS2 and build Inkscape).<br />Start the installation and follow the instructions on screen. Wait until it finishes.
**After installation finished start an MSYS2 MSYS shell (you can work with the one launched by the installer, use the "MSYS2 MSYS" shortcut in the start menu or launch "msys2.exe" in the installation directory).
*# Start an MSYS2 '''MSYS''' shell (Do not use the one launched by the installer! use the "MSYS2 MSYS" shortcut in the start menu or launch "msys2.exe" in the installation directory). <br /> Execute the command <code>pacman -Syuu</code>. This will start a full system upgrade and ensures that you have the latest versions of all core libraries.
**Execute the command <code>pacman -Syuu</code>. This will start a full system upgrade and ensures that you have the latest versions of all core libraries (make sure to repeat this step until no new updates are found).
*# Repeat the previous step until no new updates are found.
* '''Step 2''' &mdash; Download dependencies
* '''Step 2''' &mdash; Download dependencies
** Start an MSYS2 MinGW shell (use the "MSYS2 MinGW 32/64-bit" shortcut in the start menu or launch "mingw32/64.exe" in the installation directory).<br/>Choose the shell in this step (32-bit or 64-bit) according to whether you want to build a 32-bit or 64-bit version of Inkscape later.
*# Start an MSYS2 '''MinGW''' shell (use the "MSYS2 MinGW 32/64-bit" shortcut in the start menu or launch "mingw32/64.exe" in the installation directory).<br />Choose the shell in this step (32-bit or 64-bit) according to whether you want to build a 32-bit or 64-bit version of Inkscape later. 64-bit is recommended.
** Execute the script [https://gitlab.com/inkscape/inkscape/blob/master/buildtools/msys2installdeps.sh msys2installdeps.sh] by either copy-and-pasting it into the console or by downloading it and (after changing to the folder containing the file) typing <code>./msys2installdeps.sh</code>. If you already have a copy of the Inkscape source it should also be included in the "buildtools" folder.
*# Execute the command <code>curl https://gitlab.com/inkscape/inkscape/-/raw/master/buildtools/msys2installdeps.sh | bash</code><br />(The command downloads and runs the script [https://gitlab.com/inkscape/inkscape/blob/master/buildtools/msys2installdeps.sh msys2installdeps.sh].  Alternatively, you can copy-paste the script into the console or download it, change to the folder containing the file and type <code>./msys2installdeps.sh</code>. If you already have a copy of the Inkscape source it should also be included in the "buildtools" folder.)
Step 2 will take some time to complete (approx. 10 minutes depending on the speed of your internet connection and the load of the download servers), so relax and get a cup of coffee...
*# Relax and take a break, as this may take some time (a few minutes at best, but it can take significantly longer if you have a slow internet connection or the server load is high).
 


⚠️ ''Warning: Always make sure to use the proper MSYS2 shell (see screenshot to the right). Dependencies are separate for 32-bit and 64-bit Inkscape.''
⚠️ ''Warning: Always make sure to use the proper MSYS2 shell (see screenshot to the right). Dependencies are separate for 32-bit and 64-bit Inkscape.''
Line 51: Line 48:


Then execute the following commands:
Then execute the following commands:
<pre>
<syntaxhighlight lang="bash">
# change to the directory containing your Inkscape source checkout (has to be adjusted to match your system)
# change to the directory containing your Inkscape source checkout (has to be
# adjusted to match your system)
cd master
cd master


# create a directory for the build (could also be another folder, but we'll assume 'build' being used for the rest of the article)  
# create a directory for the build (could also be another folder, but we'll
# assume 'build' being used for the rest of the article)
mkdir build
mkdir build
cd build
cd build


# create build files with CMake (we generate rules for "Ninja" as it's significantly faster then "MinGW Makefiles" which uses mingw32-make)
# create build files with CMake (we generate rules for "Ninja" as it's
# note the source path '..' (which in this case is the parent directory) and should always point to the root folder of your copy of the Inkscape source
# significantly faster then "MinGW Makefiles" which uses mingw32-make)
# note the source path '..' (which in this case is the parent directory) and
# should always point to the root folder of your copy of the Inkscape source
cmake -G Ninja ..
cmake -G Ninja ..


Line 66: Line 67:
ninja
ninja


# install compiled files and all dependencies required to run Inkscape into the folder 'build/inkscape/'
# install compiled files and all dependencies required to run Inkscape into the
# folder 'build/inkscape/'
ninja install
ninja install


# The last two steps can be combined (i.e. run 'ninja install' immediately) if you want to save time in future, as the "install" target also includes the default target
# The last two steps can be combined (i.e. run 'ninja install' immediately) to
</pre>
# save some time (the "install" target includes the default target)
</syntaxhighlight>


'''''That's it!'''''<br/>
'''''That's it!'''''<br/>
Afterwards you should have a complete binary distribution of Inkscape in the folder "build/inkscape/" that can be run on <abbr title="Please note that GTK+3 (the toolkit used for creating Inkscape's UI) has dropped support for Windows XP, so builds of master will only run on Windows Vista and later. Windows XP is still supported in the 0.92.x branch, though.">any Windows machine</abbr>.
Afterwards you should have a complete binary distribution of Inkscape in the folder "build/inkscape/" that can be run on any machine running Windows 7 or later.


== Packaging ==
== Packaging ==


If you only want to run Inkscape you do ''not'' need to follow these instructions. Simply execute <code>inkscape.exe</code> from the "build/inkscape/" directory created in the previous step, the <code>ninja install</code> command takes care of copying all required files into this directory.
If you only want to run Inkscape you do ''not'' need to follow these instructions. Simply execute <code>inkscape.exe</code> from the "build/'''inkscape'''/bin" directory (not "build/bin") created in the previous step, the <code>ninja install</code> command takes care of copying all required files into this directory.


To package those files for distribution (this should only concern package maintainers or people who want to improve the installer code) we offer a set of CMake convenience targets that can be executed as follows:
To package those files for distribution (this should only concern package maintainers or people who want to improve the installer code) we offer a set of CMake convenience targets that can be executed as follows:
Line 83: Line 86:
* <code>ninja dist-win-exe</code> &ndash; generate .exe installer. You'll need to install [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)] version 3 or later.
* <code>ninja dist-win-exe</code> &ndash; generate .exe installer. You'll need to install [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)] version 3 or later.
* <code>ninja dist-win-msi</code> &ndash; generate .msi installer. You'll need to install [http://wixtoolset.org/ Windows Installer XML (WiX Toolset)].
* <code>ninja dist-win-msi</code> &ndash; generate .msi installer. You'll need to install [http://wixtoolset.org/ Windows Installer XML (WiX Toolset)].
* Additionally there's a <code>dist-win-all</code> target (executes all of the above in parallel) and for each of the three there's also a <code>dist-win-*-fast</code> target (which is identical in functionality but will use a faster compression method which will increase package size but will also significantly reduce packaging time which can be useful for debugging/development purposes).
* Additionally there's a <code>dist-win-all</code> target (executes all of the above in parallel).


For some additional details which have not been incorporated into this page yet see the previous instructions at [[Compiling Inkscape on Windows 32-bit#Creating an installer]] (might be partially oudated).
For some additional details which have not been incorporated into this page yet see the previous instructions at [[Compiling Inkscape on Windows 32-bit#Creating an installer]] (might be partially oudated).
== Troubleshooting ==
=== Issues with MSYS2 ===
; The MSYS2 shell does not open.
: Try rebooting.
; I have trouble updating an existing, older MSYS2 installation
:* Check https://www.msys2.org/news/ for any recent news that may describe your issue and explain how to solve it.
:* The most straightforward solution is often to re-install MSYS2:
::* Uninstall the old MSYS2. Make sure to completely remove the <code>C:\msys64</code> directory if the uninstaller does not do the job '''but''' remember to back up any personal data such as your home folder <code>C:\msys64\home\</code>)
::* Download a fresh installer from https://www.msys2.org/ and start over as described above.
=== Issues with building Inkscape ===
; The command `ninja` errors out after an MSYS2 update or after pulling new changes from the source reposiotry
: Re-run CMake using <code>rm -rf CMakeCache.txt && cmake -G Ninja ..</code>.
: The first command will delete cached and potentially stale info from the previous run, the second command
☎ ''If you can't solve your issue with the information above, please [https://inkscape.org/report report a bug] or [https://chat.inkscape.org/channel/team_devel\ ask in chat]''.

Latest revision as of 15:48, 23 December 2022

This page explains how to compile Inkscape on Windows using MSYS2.

MSYS2 does not only offer a convenient build environment for compiling Inkscape but also provides all necessary build tools and dependencies making it extremely simple to get started with Inkscape development.

Installing MSYS2

Always use the proper shell
  • "MinGW 32-bit" for compiling 32-bit Inkscape
  • "MinGW 64-bit" for compiling 64-bit Inkscape
  • Never use the "MSYS" shell for compiling Inkscape, only use it for updating MSYS2 itself.

You can identify the different shells according to the the purple text string in the console window (MINGW32, MINGW64 or MSYS respectively).

To set-up MSYS2 and download the necessary dependencies only two steps are required:

  • Step 1 — Install MSYS2
    1. Download the installer from the MSYS2 homepage (a 64-bit version of Windows 7 or later is required to run MSYS2 and build Inkscape).
      Start the installation and follow the instructions on screen. Wait until it finishes.
    2. Start an MSYS2 MSYS shell (Do not use the one launched by the installer! use the "MSYS2 MSYS" shortcut in the start menu or launch "msys2.exe" in the installation directory).
      Execute the command pacman -Syuu. This will start a full system upgrade and ensures that you have the latest versions of all core libraries.
    3. Repeat the previous step until no new updates are found.
  • Step 2 — Download dependencies
    1. Start an MSYS2 MinGW shell (use the "MSYS2 MinGW 32/64-bit" shortcut in the start menu or launch "mingw32/64.exe" in the installation directory).
      Choose the shell in this step (32-bit or 64-bit) according to whether you want to build a 32-bit or 64-bit version of Inkscape later. 64-bit is recommended.
    2. Execute the command curl https://gitlab.com/inkscape/inkscape/-/raw/master/buildtools/msys2installdeps.sh | bash
      (The command downloads and runs the script msys2installdeps.sh. Alternatively, you can copy-paste the script into the console or download it, change to the folder containing the file and type ./msys2installdeps.sh. If you already have a copy of the Inkscape source it should also be included in the "buildtools" folder.)
    3. Relax and take a break, as this may take some time (a few minutes at best, but it can take significantly longer if you have a slow internet connection or the server load is high).

⚠️ Warning: Always make sure to use the proper MSYS2 shell (see screenshot to the right). Dependencies are separate for 32-bit and 64-bit Inkscape.


Obtaining Inkscape Source

Note: For general instructions on how to use Git see Working with Git.

As MSYS2 provides the revision control software Git you do not need to download it separately. Simply open the MSYS2 MinGW shell and run the command

git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git master

This creates a folder called "master" in the current working directory (usually the home folder located at "C:\msys64\home\Your_Username" or similar) in which the clone of the source repository is created.

You can later update it with:

git pull --recurse-submodules

Building Inkscape with MSYS2

To compile Inkscape open the MSYS2 MinGW shell (remember to use the correct shell, i.e. 32-bit or 64-bit, matching the dependencies you downloaded above and the version of Inkscape you want to build).

Then execute the following commands:

# change to the directory containing your Inkscape source checkout (has to be
# adjusted to match your system)
cd master

# create a directory for the build (could also be another folder, but we'll
# assume 'build' being used for the rest of the article)
mkdir build
cd build

# create build files with CMake (we generate rules for "Ninja" as it's
# significantly faster then "MinGW Makefiles" which uses mingw32-make)
# note the source path '..' (which in this case is the parent directory) and
# should always point to the root folder of your copy of the Inkscape source
cmake -G Ninja ..

# start the compilation
ninja

# install compiled files and all dependencies required to run Inkscape into the
# folder 'build/inkscape/'
ninja install

# The last two steps can be combined (i.e. run 'ninja install' immediately) to
# save some time (the "install" target includes the default target)

That's it!
Afterwards you should have a complete binary distribution of Inkscape in the folder "build/inkscape/" that can be run on any machine running Windows 7 or later.

Packaging

If you only want to run Inkscape you do not need to follow these instructions. Simply execute inkscape.exe from the "build/inkscape/bin" directory (not "build/bin") created in the previous step, the ninja install command takes care of copying all required files into this directory.

To package those files for distribution (this should only concern package maintainers or people who want to improve the installer code) we offer a set of CMake convenience targets that can be executed as follows:

For some additional details which have not been incorporated into this page yet see the previous instructions at Compiling Inkscape on Windows 32-bit#Creating an installer (might be partially oudated).

Troubleshooting

Issues with MSYS2

The MSYS2 shell does not open.
Try rebooting.
I have trouble updating an existing, older MSYS2 installation
  • Check https://www.msys2.org/news/ for any recent news that may describe your issue and explain how to solve it.
  • The most straightforward solution is often to re-install MSYS2:
  • Uninstall the old MSYS2. Make sure to completely remove the C:\msys64 directory if the uninstaller does not do the job but remember to back up any personal data such as your home folder C:\msys64\home\)
  • Download a fresh installer from https://www.msys2.org/ and start over as described above.

Issues with building Inkscape

The command `ninja` errors out after an MSYS2 update or after pulling new changes from the source reposiotry
Re-run CMake using rm -rf CMakeCache.txt && cmake -G Ninja ...
The first command will delete cached and potentially stale info from the previous run, the second command


If you can't solve your issue with the information above, please report a bug or ask in chat.