On Jun 9, 2011, at 6:17 AM, Krzysztof KosiĆski wrote:
2011/6/9 Jon Cruz <jon@...18...>:
Actually most projects do use some build tool of one form or another. At the moment the main candidate for cross-platform building is cmake.
CMake is a popular choice, but I don't understand its popularity. Its scripting language is frustratingly weak. You have to write hundreds of lines to do anything even moderately complex. The syntax is bizarre, sometimes case-sensitive and sometimes not. It would also add another build dependency.
Waf is a 100 kB script that allows you to use Python as the build scripting language. It uses only Python functionality, and we already have the required version of Python in the devlibs. Another plus is that it mimicks Autotools (configure, build, clean, distclean). And those are not theoretical considerations, I have successfully built Inkscape on both Windows and Linux using it and I see no reason why it wouldn't work on OSX. Adding features like revision number in the about box, autogenerated sources, etc. was easy, as there are many examples available.
Among the issues is that CMake is well established, while Waf is a bit newer and still getting going.
CMake has a larger development team, while Waf is mainly a one-man project.
There is a much larger community for CMake of people who can lend a hand or help us with it in general.
Waf was extending then replacing SCons. Many consider the architecture to be sub-optimal from that.
Many people consider that Waf exposes an entire general purpose language to be a negative as opposed to a positive. (this point is probably open for discussion)
Waf and it's proponents point out that CMake doesn't support "distclean" as a negative. CMake, on the other hand, points out that needing to have "distclean" to begin with is a negative.
CMake was picked up by Scribus among other related projects.
We have both key people from CMake and people from using projects such as Scribus volunteering to help us move to and maintain a CMake build. (Ongoing support of a system is probably a key factor)
CMake can create 'native' build results so that one can use Dev Studio on windows, XCode on Mac, etc.
And finally one of the biggest blockers is that the person in charge of Waf has stated that some changes we need will not be accepted into Waf. So if we do want to use it we will end up having to fork and maintain our own custom branch of the project. That in and of itself will be a large burden over even a short bit of time.
If anyone is interested in a good overview of CMake, Floss Weekly covered it in episode 111 of the podcast: