Thursday, September 18, 2014

Install Vala with GTK+ 3 in Windows

As you may know, vala have binary release for windows maintain by communities.
https://code.google.com/p/vala-win32/downloads/list
But the binary release are not up to date now, their last release is for vala v0.12.0 on April 2011.

But if you really want to develop an Application with this awesome cross platform programming language in Windows, you still have a way, "build from source".

For build Vala from source in Windows, you can follow my step-by-step guide bellow to install:
- Vala v0.25.4 (latest version when i write this post) with
- GTK+ 3 v3.6.4-20130921 (latest version when i write this post).

Here's the guide to follow:
1. Download MinGW-builds from http://sourceforge.net/projects/mingwbuilds/
2. Run "mingw-builds-install.exe", select :
  • Architecture = "x32"
  • Threads = "win32"
  • Exception = "sjlj"
like picture below:

3. Continue installation wizard, then choose directory where to install MinGW to:
C:\mingw-builds


4. After installation finish, download the latest "external-binary-packages" from http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ then copy/extract the "msys" directory to:
C:\mingw-builds\mingw32


5. Open "C:\mingw-builds\mingw32\msys\etc\fstab" with Notepad++ and add this line:
C:\mingw-builds\mingw32 /mingw
in it then save.

6. Download the Win32 GTK+ v3 "all-in-one bundle" from http://www.gtk.org/download/win32.php and then copy/extract it's content to "C:\mingw-builds\mingw32".

7. In order to get a nice shell, create a new shortcut, e.g. on the Desktop and set shortcut location to:
C:\mingw-builds\mingw32\msys\bin\mintty.exe /bin/bash -l
then leave shortcut name to "mintty.exe" or "mintty" or "MinGW-Console".

8. Create "home" folder inside "C:\mingw-builds\mingw32\msys" folder then create folder with the name same as your windows login name inside "home" folder.

You can get your windows login name simply with opening "command prompt".

9. Download the latest source tarball from https://wiki.gnome.org/Projects/Vala/Release and then copy/extract it's content to "C:\mingw-builds\mingw32\msys\home\{Your Username}"

10. Add Vala Directory path to your System Variable Path.
Open "Control Panel > System > Advanced system settings > Environment Variables ..."
Add New System Variable with :

  • Variable name = "ValaPath"
  • Variable value = "C:\mingw-builds\mingw32\msys\build\bin"

Then add "ValaPath" to System Variable Path
;%ValaPath%



11. Run the Mintty shortcut you created in step 7 and switch with "cd" to the vala source directory then execute command below:
cd vala-0.25.4/
./configure --prefix=/build
make
make install

If no error found, then your step to install Vala is complete. You can try to execute syntax below to check Vala is Ready:
gcc --version
valac --version
it will return versions for each compiler.

If no error found again, then you may try to create a GUI Application using Vala and GTK+ in windows. For express, you can try sample code from https://wiki.gnome.org/Projects/Vala/GTKSample eg, like below:

Create new File inside "C:\mingw-builds\mingw32\msys\home\{Your Username}" with "gtk-hello.vala" as filename. Then type code below as it's content:
using Gtk;

int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "First GTK+ Program";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size (350, 70);
    window.destroy.connect (Gtk.main_quit);

    var button = new Button.with_label ("Click me!");
    button.clicked.connect (() => {
        button.label = "Thank you";
    });

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}
then compile that source code using Vala Compiler:
valac --pkg gtk+-3.0 --cc=gcc gtk-hello.vala
if no error found when compile, you can execute the result application with call it:
gtk-hello.exe
it will show window like below:

Ok, Thanks for Reading. If you have problem when following my guide, drop me a comment below.

In other post i will show you how to:
- Run Created Application outside MinGW.
- Remove Empty Command Prompt behind Created Application if run outside MinGW.
- Publish application created using Vala & GTK+ in Windows for Windows OS