Autotools, Cmake和Scons之间有什么区别?

这两个文件主要出现在开源项目中。它们的作用是什么?它们是如何工作的?