make是一个命令工具,是一个解释makefile中指令的命令工具。通常来讲,大多数的IDE都有这个命令,好比:Delphi的make,Visual C++的nmake,Linux下GNU的make。linux
这些 Make 工具遵循着不一样的规范和标准,所执行的 Makefile 格式也千差万别。程序员
这样就带来了一个严峻的问题:若是软件想跨平台,必需要保证可以在不一样平台编译。而若是使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工做。 工具
makefile成为了一种在工程方面的编译方法。 makefile一般依赖于你当前的编译平台,并且编写makefile的工做量比较大,解决依赖关系时也容易出错。性能
这就是make和makefile二者之间的关系。make以后生成obj中间文件,再link一下就生成可执行文件了。学习
CMake就是针对上面问题所设计的工具:它首先容许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,而后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而作到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。操作系统
相似Make工具的功能,CMake工具就是“读取”并执行CMakelists.txt文件中的语句,来生成对应的Makefile。而后开发者就能够经过Make工具来“执行”Makefile了。.net
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程以下:设计
cmake PATH
或者 ccmake PATH
生成 Makefile 1 1ccmake
和 cmake
的区别在于前者提供了一个交互式的界面。。其中, PATH
是 CMakeLists.txt 所在的目录。make
命令进行编译。
makefile的目的是为了实现自动编译的目的,会用到make工具去执行makefile上的编译指令。并且不一样平台的makefile文件编写规则不同。调试
其实手动编写makefile是一件让人抓狂的事,并且也很愚蠢。
应该使用cmake工具自动生成makefile。这样的话会编写CMakelists.txt就行了。
其实这些编译相关的工做如今大多都交给IDE去完成了。做为知识面的扩展和底层原理的理解仍是有必要的。
======================================================
IDE的功能:
代码编辑、分析功能、编译功能、调试功能;
IDE的优缺点:
=================================================
参考连接:
Cmake入门实战:https://www.hahack.com/codes/cmake/