[zeromq-dev] Building on Windows

Martin Sustrik sustrik at fastmq.com
Sun Jan 4 00:14:29 CET 2009

George Neill wrote:
> Martin,
> On Wed, Dec 31, 2008 at 3:31 AM, Martin Sustrik <sustrik at fastmq.com> wrote:
>> Hi Michael, George, everyone,
>> There's one thing I would like your opinion on.
> Only if you don't bash my opinion!  :)

Which we certainly won't :)

>> Currently, there are 3 build systems in 0MQ because of Win32: MSVC
>> project, CMake and MinGW. We cannot maintain all three of them
>> Maintaining all 3 of them would be too much work with too little added
>> value for us. Thus, we would like to choose one to maintain.
>> There are several (mostly contradictory) requirements to take into account:
>> 1. Deployment of Windows binaries will be done via MSI installer
>> package, thus 0MQ users won't have to care about build system at all.
>> The only ones who should be still interested in the topic are developers
>> intending to modify 0MQ code itself.
> installjammer?  http://www.installjammer.com

We have a simple win-only installer using wix almost ready.

>> 2. Ideally, there should be only one build system which would mean that
>> MSVC proj is not an option as it doesn't work for non-Windows systems.
>> 3. CMake is able to generate MSVC project files (am I right?)
> Yes.  That is correct.  It can also generate NMake makefiles (which I
> tend to use most often) when on windows.
>> 4. CMake is missing some features, like packaging (am I right?)
> The cmake project does have a packager, cpack
> (http://www.cmake.org/Wiki/CMake:Packaging_With_CPack)
> I haven't used it at all so I cannot comment much on it.  I use their
> ctest, for unit testing ... it's pretty slick.  Kitware also has a
> continuous build system dashboard, cdash, but again I haven't used
> that at all either.

I've seen the guys presenting the suite at FOSSDEM... seems I've forgot 
most of what was said there.

>> 3. Windows developers may be have little experience with anything aside
>> MSVC and say MinGW may be considered to be an entry barrier to high to
>> overcome.
> CMake certainly caters to this idea (mentality?).  Though I think
> you'd be pleasantly suprised; most often this is not the case! :)

Dunno. I've used to be Win developer myself, so I'm judging on personal 
experience - although a bit outdated one.

>> 4. There may be performance difference between MSVC and gcc (MinGW) build.
>> 5. MinGW may require additional dependencies on runtime (is it so?)
>> Any thoughts anyone?
> So what I think I am hearing you say,  cmake or GNU autotools ...
> I have been an autotools user for many years now, and I am always
> amazed at how involved it _can_ be in setting up and using (on 'nix
> platforms other than linux).  I am also amazed at how much stuff gets
> included in autotool projects that really isn't needed (or used).
> Okay you twisted my arm, an example would be all of the platform
> checks in the 0mq autotools build, which never get used.  :)


> I prefer cmake, it's simple.  Even with the few quirks I have ran in
> to with it.  I have always been able to figure out how to get what I
> needed done and in a timely manner.  Kitware is very active on the
> cmake mailing list and are very helpful when you need some help.  If
> you want to talk quirks, let me know, but in general I now
> prefer/recommend this tool over autotools (even when windows isn't
> involved).
> Don't get me wrong, I don't hate autotools.   It is very flexible has
> fit the bill for many years I just prefer not to use it if I don't
> have to anymore.
> My vote is +1 for cmake!

Actually, after reading all the feedback I've realised that it's not 
that easy and that we simply cannot simplify the project as to use a 
single build system...  So what I would do is to leave the build system 
as is for now and hope that community will gradually converge on some 
plausible solution.

Happy new year everyone!

More information about the zeromq-dev mailing list