5分钟理解make/makefile/cmake/nmake
发布网友
发布时间:2024-09-29 21:44
我来回答
共1个回答
热心网友
时间:2024-12-04 08:00
你是否对make、cmake、makefile等概念感到困惑?不妨阅读以下内容,或许能帮助你理清这些概念。
首先,gcc是GNU Compiler Collection,即GNU编译器套件,可以编译多种编程语言,如C、C++、Objective-C、Fortran、Java等。
当程序只有一个源文件时,可以直接用gcc命令编译。但若程序包含多个源文件,手动编译变得混乱且费时,这时make工具应运而生。
make工具是一个智能的批处理工具,它本身不具备编译和链接功能,而是通过调用makefile文件中的命令来进行编译和链接。
makefile就像一首歌的乐谱,make工具则像是指挥家,根据乐谱指挥整个乐团演奏。makefile中包含了调用gcc(或其他编译器)编译源文件的命令。
对于大型工程,手动编写makefile非常麻烦,这时cmake工具登场。cmake可以自动生成makefile文件,并且支持跨平台生成对应平台的makefile。
cmake根据CMakeLists.txt文件(组态档)生成makefile。CMakeLists.txt文件需要程序员自己编写。
nmake是Microsoft Visual Studio中的附带命令,相当于linux的make。
总结一下大体流程:首先编写源代码,如.c文件;然后使用编译器编译代码生成目标文件,如.o;最后用链接器连接目标代码生成可执行文件,如.exe。
对于大量源文件,make工具可以帮助批处理编译,而cmake工具则可以自动生成makefile,减轻程序员负担。
在编程世界中,没有捷径可走,需要脚踏实地。