Cmake Make makefile GNU autotools
个人总结
首先makefile是由make来编译,而makefile的生成可以由GUN autotools和CMake来实现,但前者没有CMake的CMakelist.txt直观,所以我们一般用CMake来跨平台的生成makefile!
——————————————以下是从网络上查找的资料————————————
Cmake与Make
“Make”是一个编译工具,它控制可执行程序和程序源文件中非源码文件的生成。也就是编译过程生成的文件
“Make”工具需要清楚的知道如何构建程序。 它通过一个叫做“makefile”的文件知晓如何构建你的程序。这个文件列出了所有的非源码文件以及如何由别的文件来计算它。
当你编写了一个程序,你应该为它写一个makefile文件,这样才有可能通过使用“Make”来构建和安装你的程序。
它仅仅更新编译那些直接或者间接依赖这些改变了的源码文件的非源码文件
-------
CMake Cross Make
CMake支持跨平台Make。它可以产生Makefile文件,
CMake 辨别使用哪种编译器去编译给出的源码种类。
CMake为每一种类型的目标平台按照正确的顺序调用命令。
CMake比GNU构建系统更有优势:
用于编写CMakeLists.txt文件的语言具有可读性和很容易理解。
不仅可以使用“Make” 来构建工程。
支持多种生产工具,比如Xcode, Eclipse, Visual Studio, etc.
CMake与Make对比具有以下优点
◾跨平台发现依赖的系统库。
◾自动发现和工具链的配置。
◾轻松地将您的文件以一个平台无关的方式编译成共享库,比make更容易使用。
makefile:编译指南
Linux 环境下的程序员使用GNU make来构建和管理自己的工程;在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。
不过这需要我们投入一些时间去完成一个或者多个称之为Makefile 文件的编写。
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
GNU autotools
在Linux系统开发环境中,GNU Autotools 可以完成手工写Makefile这项复杂而有趣的工作。
autotools是系列工具, 它主要由autoconf、automake、perl语言环境和m4等组成;所包含的命令有五个:
(1)aclocal
(2)autoscan
(3)autoconf
(4)autoheader
(5)automake