Installer, documented
For a long time Cedric Gustin provided a popular gtkmm installer for Windows. But he hasn’t had time for that since gtkmm 2.10, so there was no gtkmm 2.12 installer for Windows.
I encouraged others in the community to take over this work, but I eventually asked Armin, one of our Openismus developers, to get it done, with advice from Cedric. He recently blogged about creating that gtkmm 2.14 windows installer. I also asked him to document exactly what it provides, what to distribute with your application, and how the installer was created. See the gtkmm on Windows page, and the Building gtkmm on Windows page.
The installer and the documentation have been through a few iterations of feedback from me and then from the mailing list, so please do tell us if it’s unclear or missing information, or missing something that you need.
Multiple compilers
It looks like we must provide a MS Visual Studio 2008 build as well as a MS Visual Studio 2005 build, so Armin is working on that. Although the compilers are compatible, developers will expect our DLL to link to the new (parallel-installed) version of the MSVC++ runtime libraries, and accidentally linking to both runtime libraries in an application is probably no fun. If we are wrong about that then please do tell us, to save us some work.
I am also concerned that we may need to provide various builds for the various versions of gcc for the MinGW build. Or maybe we should just support the latest one. Unfortunately two users have even reported an incompatibility between g++ 3.4.2 and g++ 3.4.5 in MinGW – they had to upgrade the compiler to catch exceptions from gtkmm when using our DLLs. That shouldn’t be necessary.
For all these various versions, we need to invent DLL naming conventions. But I’d rather take someone else’s conventions. Is there any other C++ library that has an equivalent installer that doesn’t just force you to use one particular compiler? Qt seem to provide only the source code. That’s just enough, but it isn’t very convenient.
Development is so much easier on Linux.
For DLL naming conventions, I would recommend to take a look at the Boost libraries. See section 6.3 from the Boost Getting Started manual : http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html
“Development is so much easier on Linux.”
Absolutely. I do cross-platform Solaris/Windows development at work. Just… urgh.
Thanks Cedric.
Here’s a direct link to that Boost Windows library naming convention section:
http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#library-naming
I would agree that the Boost DLL naming convention would be very useful in marking what C++ runtime library configuration was used.
I have just finished creating a Visual Studio 2005 build environment for the whole of Gtkmm based on Armin’s “MSWindows/BuildingGtkmm” instructions.
It was mostly straightforward. A few gotcha’s like sigc having only a .NET 2003 project file that needed converting and tweeking but that was not a real hassle.
The reason I’m doing this is two fold – first creating an environment where I can trace bugs, and to create alternative linked configurations to match project
requirements (static/non-static, multi-threaded/single threaded, debug/non debug).
Tony, we actually had libsigc++ project files for Visual Studio 2005 and 2008 in svn, but they were not in a tarball release until today. Please tell us if there is any problem or anything that we can improve, ideally on the mailing list.