RE: Windows 32/64bit downloads and/or bundles for 2.x and 3.x



I’ll pop into your #hexchat-devel IRC channel tomorrow if you want to chat about it, or need some help getting started with our tools (we’re still a bit behind on docs)


Hmm. Now that I think about it, I added a bunch of cmdlets that I never even mentioned in the docs at all (things for generating template build/packaging scripts)




From: Arnavion [mailto:arnavion gmail com]
Sent: Wednesday, June 12, 2013 2:12 PM
To: Garrett Serack
Cc: gtk-devel-list
Subject: Re: Windows 32/64bit downloads and/or bundles for 2.x and 3.x


Awesome! I'll look into integrating this into our build script somehow.



On Wed, Jun 12, 2013 at 1:15 PM, Garrett Serack <garretts microsoft com> wrote:

Yes, we’ve done some of the libraries in that stack already:


(*really* nice job on that page & script by the way, it’s the clearest instructions for that stuff that I’ve ever seen :D )


Off that page, we already have


And yes, we’ve done these using MSVC ( vc10, vc11  * release, debug * static, dynamic *x86, x64 )


The VC12 preview release is coming at the //build conference this month, and we’ll add that into our matrix when that comes out. (it may be late july-ish, I think we’re going to make a change to split up the .lib/.dll files into smaller, fine grained satellite packages)


I was looking at your scripts to see if we could merge efforts there too. (one of the things that lead me here was looking at your page)


You can see most of the ‘native’ nuget packages we’ve built in the gallery : (well, a few of those are .NET pkgs, but look for the ones marked ‘native’ )


Right now, we shallow fork projects here ( ), and add our build files (usually found right now in the /COPKG/ folder in the project)

The script file that iterates over the variations is the .buildinfo (example: )


And you can see one of our simplified .vcxproj files ( ) -- this still loads in VC10 and VC11 too.


Nice part about these builds, is that they’re all pretty atomic – dependencies are brought in using the packages and so anyone can generally rebuild an individual package.




From: Arnavion [mailto:arnavion gmail com]
Sent: Wednesday, June 12, 2013 12:03 PM
To: Garrett Serack
Cc: gtk-devel-list
Subject: Re: Windows 32/64bit downloads and/or bundles for 2.x and 3.x


Hi Garrett,


You mentioned that you have done work to provide builds of common open-source libraries. Can you provide more information on this?

- Do you mean that these builds are done using MSVC?

- Does this include any libraries that GTK depends on?


I am curious to see if any of the work we do on can be reduced (or merged into yours).





On Wed, Jun 12, 2013 at 10:19 AM, GarrettSerack <garretts microsoft com> wrote:

Howdy Folks,

(apologies for resurrecting this older thread, but it felt the most
appropriate way to continue this conversation...)

(and, apologies for the long-ish email, it's a big topic :D )

My name is Garrett Serack - I work as a Senior Developer in at Microsoft in
the Open Source Technology Center -- my role here is to help get open source
software running better on Windows--my management specifically cares about
things on Windows *Server* (ie, PHP, Apache, MySQL, Node.js etc) , but so
very many things are needed for some of those that it's really not much of a


In addition to the (W)AMP stack I have an extremely strong interest to see
quality builds of the whole GTK+ stack (and as many apps as will run) make
their way onto Windows.

This spring, we added support for Native C/C++ packages to NuGet (a library
package manager that up till now was .NET only) -- this makes it pretty darn
easy to produce, share and consume C/C++ libraries in VC10, VC11 (and
beyond). The packaging of the libraries is extremely flexible in that it can
handle all the different variations of a given library across any number of
'pivots' -- Compiler (VC6,7,8,9,10,11,etc) , Linkage (static, dynamic, ltcg,
sxs), Configuration (Release, Debug), C Runtime Library Linkage
(static,dynamic), Platform (x86, x64, arm) ... and pretty much any other
varation that you want to provide variations on.

The support for VC is handled by generating a msbuild .targets file that
gets imported into the consuming project which intelligently sets up all the
settings needed to actually compile and link against the package.

Working with some members of our community, we also started making builds
available of common open-source libraries -- and then we started to hit GTK+
and friends, and as I dug deeper into the process of building all of them,
it became clear that the better approach would be to work with everybody who
is trying to build the libraries and try to make one consistent approach to
building and packaging the libraries up on Windows.

We've been working to make better basic project (.vcxproj) templates than
the less-than-stellar ones that ship with Visual Studio. We've distiled down
the necessary stuff to make it far simpler to make project files for
building all of these libraries, and remove all the cruft and confusing
stuff that's come from a decade and a half of Visual Studio development.

I've also done a ton of work to improve automating over a given set of
projects to produce all the different variations of a given build, for
multiple compilers, so that when we package up a given library, we give as
many variations as possible.

My goal here is to make these libraries easy to build and consume for as
many varations (compilers, platforms, etc) as possible.  I know that this
can be done with a single set of VCXProj files (which wne properly iterated
over, can generate all combinations of the libraries for all the VC

I'd like to work along with anyone who's interested.

Garrett Serack
garretts microsoft com
twitter: @fearthecowboy

Things I've been considering

 - Generate some files for CMake as well and include them in the library,
which would make it possible to consume libraries in CMake-based builds.
This wouldn't be too difficult, since in the generator I've already got all
the information I need to produce the files, it's just likely to be at least
a couple weeks worth of work. I should actually ping Bill Hoffman on that...

 - At some point in the future, I'd also like to add toolset support for GCC
so that MSBuild could compile with it as well (I think adding in the right
stuff to the project at would be the best for

 - Currently, the tools for building the packages rely heavily on the
MSBuild infrastructure, so it's not currently possible to run them on
non-Windows platforms, but it may be possible to move towards using Mono's
xbuild (or, just treat the vcxproj .targets files as xml and just 'do what
we know we need to' instead of using the flimsy wrappers in msbuild's object

More Information

Packging Native Libraries Tutorial:

Channel 9 interview:

View this message in context:
Sent from the Gtk+ - Dev - General mailing list archive at

gtk-devel-list mailing list
gtk-devel-list gnome org



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]