[zeromq-dev] Building on Windows

George Neill georgen at neillnet.com
Wed Dec 31 12:35:42 CET 2008


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!  :)

> 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

> 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.

> 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! :)

> 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!

Thanks,
George.



More information about the zeromq-dev mailing list