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'

No comments:

Post a Comment