Showing posts with label glibmm. Show all posts
Showing posts with label glibmm. Show all posts

Monday, July 6, 2015

building glibmm by visual studio

Problem

I've needed build glibmm (as dependency for libxml++), and wanted it as static x64 library with static runtime.


Tools & versions

  • glibmm (version near 2.45.3)
  • cygwin x32
  • visual studio 2013
  • git client
  • notepad++
  • far manager
  • Compiled in visual studio 2013 libraries:
    • Compiled intl (version 20090911) in Visual Studio 2013 - [link]
    • Compiled pcre (version 8.37) in Visual Studio 2013 - [link]
    • Compiled libffi (version 3.2.1) in Visual Studio 2013 - [link]
    • Compiled zlib (version 1.2.8) in Visual Studio 2013 - [link]
    • Compiled libsig++ (version 2.4.1) in Visual Studio 2013 - [link]
    • Compiled glib (version 2.45.3) in Visual Studio 2013 - [link]
glibmm:
Date: (02.07.2015 22:03:00)
Commit hash: 9c5e30622e38974e909fef60ea045d08000e33a0
just last commit on the moment of building


Action

I assume building take place in 'D:\projects\libraries\libxmlplusplus' and here are all dependencies already built by my instructions.

1) git clone https://github.com/GNOME/glibmm

2) delete '\r' in ./configure.ac & ./autogen.sh (I did it with notepad++)

3) Run 'Cygwin.bat' as administrator (it's important - somewhy it works only this way)

4) In cygwin console go to directory with sources and exec:
export GLIBMM_CFLAGS=-I"D:/projects/libraries/libxmlplusplus/libsigc++-2.4.1/_cygwin/include"
export GLIBMM_LIBS="D:/projects/libraries/libxmlplusplus/libsigc++-2.4.1/_cygwin/lib"
export GIOMM_CFLAGS=-I"D:/projects/libraries/libxmlplusplus/libsigc++-2.4.1/_cygwin/include"
export GIOMM_LIBS="D:/projects/libraries/libxmlplusplus/libsigc++-2.4.1/_cygwin/lib"
./autogen.sh
cd ./glib/src
make
cd ../../gio/src
make
These steps lead to generating a lot of source code files - which just absent without them.

5) Comment '#  define GLIBMM_DLL 1' in files:
  • D:\projects\libraries\libxmlplusplus\glibmm\glib\glibmmconfig.h
  • D:\projects\libraries\libxmlplusplus\glibmm\MSVC_Net2010\glibmm\glibmmconfig.h
6) In visual studio project 'glibmm' authors forgot to add sources (which present in directory with sources) - you should add them to project:
  • binding.h
  • binding.cc
7) Remove all .lib filenames from property_sheet 'glibmmbuilddefinesprops'

8) Create two property sheets - for 'x64 debug' and for 'x64 release' and add them to 'glibmm' project.

x64 Debug:
  • additional include directories
    • D:\projects\libraries\libxmlplusplus\glib
    • D:\projects\libraries\libxmlplusplus\glib\glib
    • D:\projects\libraries\libxmlplusplus\glib\gmodule
    • D:\projects\libraries\libxmlplusplus\libsigc++-2.4.1\_cygwin\include\sigc++-2.0
  • additional library directories
    • D:\projects\libraries\libxmlplusplus\glib\build\win32\vs10\Debug\x64\bin
  • input
    • glib.lib
    • gobject.lib
    • gmodule.lib
x64 Release:
  • additional include directories
    • D:\projects\libraries\libxmlplusplus\glib
    • D:\projects\libraries\libxmlplusplus\glib\glib
    • D:\projects\libraries\libxmlplusplus\glib\gmodule
    • D:\projects\libraries\libxmlplusplus\libsigc++-2.4.1\_cygwin\include\sigc++-2.0
  • additional library directories
    • D:\projects\libraries\libxmlplusplus\glib\build\win32\vs10\Release\x64\bin
  • input
    • glib.lib
    • gobject.lib
    • gmodule.lib
9) set /MT or /MTd - to glibmm

10) set 'configuration type' -> 'static library' - to glibmm

11) build 'glibmm'