GNU Make

GNU Make

GNU Make 是一个非常流行的开发工具,用于协调软件项目编译。Make 通常用于管理 GCC编译器套件,但也适用于其他软件开发或打包任务。

用 Incredibuild 加速 GNU Make

什么是 GNU Make?

GNU Make 是一个流行的开发工具,可协调编译软件项目。Make 通常用于管理 GCC 编译器套件,但也可用于其他软件开发或打包任务。

大型 C/C++ 程序构建通常步骤较多,所以需要一个工具,如 SUP,确保所有源文件都已完成编译、链接。此外,Make 还可以帮助开发人员控制打包、安装辅助文件,如文档、man 手册页、systemd 配置文件、init 脚本和配置模板。

Make 不局限于 C/C++ 这一类语言。网页开发师还可以使用 GNU Make 来简化 CSS JS 等重复性的任务,系统管理员则可以自动维护任务。

此外,Make 使用门槛低,终端用户也可以使用 Make 来编译和安装软件,即使在没有任何程序知识的情况下,也能轻松搞定。

更多 GCC 相关内容

立即试用
什么是 GNU Make?

它可以做什么,如何使用它?

GNU Make 负责处理 Makefile 文件,指导软件构建,通过循环访问指令,确定规则和目标输出。

Makefile 规则是一组统一命名的命令,各个命令一起执行创建输出文件,这个文件则称为目标输出文件(通常是库或可执行文件)。如果目标已经存在,而源代码还没有更新,make可以自动跳过不必要的构建步骤,减少编译时间。

CMake vs Make

相关阅读

GNU Make 的发展历史

Make 创建于 1976 4 月,其创始人为 Stuart FeldmanGNU 20 世纪 80 年代末发布了自由软件版本。现在,版本 3.56 仍然可以从 GNU FTP 服务器上获得(通过diffs),其历史可追溯到 1989 9 23 日。

目前的最新版本是 GNU Make 4.3,发布于 2020 1 19 日。

如何下载、安装 GNU Make ?

如果你使用的是 Linux 系统,make程序可能已内置。如果系统内并无make程序,可以使用以下命令进行安装:

  • Debian/Ubuntu – apt install make
  • Fedora/RHEL – yum install make
  • Arch/Manjaro – pacman -S make

这一步是负责安装 make 程序,此外,如果你也需要附带的开发工具,则可以运行:

  • Debian/Ubuntu – apt install build-essential
  • Fedora/RHEL – yum groupinstall ‘Development Tools’
  • Arch/Manjaro – pacman -S base-devel

Windows系统可以安装、使用MinGW(全称: Minimalist GNU for Windows),或启用WSL(全称:Windows Subsystem for Linux),同时安装所需的Linux发行版。最后,根据个人需求运行上面的命令。

GNU Make 用例

Makefile 是指示GNU Make构建软件项目的主要方式。让我们看一个简单的 Makefile

# Define our compiler as GCC

CC=gcc

# The main rule and targets

hello: hello.c hellolib.c

$(CC) -o hello hello.c hellolib.c

# A rule to clean binaries

clean:

rm -f hello

在这个简单的项目中,我们首先定义一个名为 CC 的变量。虽然没有必要,但这帮助我们指定项目编译器。如果我们之后想更改,只需更改这一行代码。Make 可以定义多个变量,并在规则中使用,从而减少键入和重构的工作量。

文件中第一条规则“hello”,将成为默认规则,并在运行“make”命令时处理。另外,相关文件也已经列出, make 可以优化其构建顺序。接下来一行(空行之后),列出了创建目标的命令。注意前面变量CC的用法。

最后,我们定义了一个 clean 规则,通过“make clean”命令执行,在必要时删除生成的二进制文件,保持构建整洁。Clean 规则不是必需的,但是非常方便,尤其是在生成多个二进制文件时。

你可以通过安装规则(install rule)来添加此示例。许多通用软件包的说明都要求运行“make install”。但这样做只会触发安装规则,这个规则一般包括将编译的二进制文件复制到特定位置的命令。

许多GNU Make的新手在 makefile 中经常遇到语法问题。使用 tab 键在规则中缩进构建命令非常重要。空格(Space)键将不起作用,而且会导致 make 错误地执行 Makefile

功能和优势

GNU Make 是编译软件项目中必不可少的工具,尤其是在 GNU Linux 环境中。Makefile 语法简单,可智能化处理目标文件,这些功能都让它成为开发的最佳搭档。

Make 有各种简单方便的命令行参数,可帮助快速更改 Makefile 执行,其中包括 -j 开关,支持并行操作以获得更快的性能。

GNU Make 的另一个关键特点,是它属于GPL 3(通用公共许可证)许可的自由软件,因此终端用户可以有更多使用、修改软件的自由。

GNU Make 与 Incredibuild

Make可以通过 -j 开关同时运行多个进程,不过这种同步化只是限制在一台机器上。Incredibuild GNU Make 集成,全力推动从编译、测试到发布自动化的开发进程,以更快的速度向市场交付更好的产品。Incredibuild 进程虚拟化技术可以在你的网络、云中获取空闲 CPU,同时远程机器中模拟本地环境,将每台机器无缝切换成拥有数百个内核的超级计算机。

icon

要点总结

GNU Make 是 GNU/Linux 生态系统的基石。Linux 系统构建任务离不开 MakeMake 实用性高,性能优异,甚至可以自动化处理包括 Linux 内核在内的最为复杂的构建。

获取免费 License

More Build systems