13
votes

We are looking for adequate build tool for a desktop GUI application to be written in D (using Qt toolkit), consisting of several native libraries, using 3rd party C-lib(s). It has to build on Linux (native development) and Mac as well on Windows. We might adopt Code::Blocks as IDE.

Waf already has support for D language, while CMake is just receiving it cmaked2.

CMake uses special language, while Waf is pure Python...Otoh, CMake, via CPack, can produce packages in several formats as well as GUI installer for e.g. Windoze.

Any pro/cons and what would you use?

We excluded Scons for speed reasons and autoconf, so, please, advice against CMake/waf only.

Update: Although not received any reply here, we were researching in other places, did some reading & testing and decided to use Waf (1.6. release is just around the corner).

2
Oh my. This is the 200th question with the D tag. :)Jonathan M Davis
Can we have some sort of graph to show the growth of D-tag questions? I hope it looks exponential.jcao219

2 Answers

9
votes

Waf is very fast and has been chosen as the build system for Samba (http://samba.org/). It is also used by many proprietary projects because it lets you do crazy things that are impossible in Make/CMake.

5
votes

I would/do use CMake

I've seen CMake used in many more places than Waf. Most importantly the KDE project is now using CMake.

I did some research on google code search:
there are 2,097 wscript files in various opensource projects
compared to 36,914 CMakeLists.txt.

So CMake is definitely more popular.

I also tried to use google trends to see which was gaining more traction CMake or Waf. I wasn't succesful as Waf is too general at term (ie Wife Acceptance Factor), and "Waf build" doesn't show up in google trends at all.

Scons is known to have terrible performance issues. As Waf is a Scons derived I worry about its performance.

Lastly, CMake has terrible syntax and Waf has beautiful syntax. Since you're going with D it looks like you're willing to go off the beaten path for superior tools. In that case Waf may be the perfect fit.