CMake or Waf for D project

江枫思渺然 提交于 2020-01-22 17:34:46

问题


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


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/3895863/cmake-or-waf-for-d-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!