【Linux】快速上手自动化构建工具make/makefile

这篇具有很好参考价值的文章主要介绍了【Linux】快速上手自动化构建工具make/makefile。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

👀樊梓慕:个人主页

 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》

🌝每一个不曾起舞的日子,都是对生命的辜负


目录

前言

1.什么是make / makefile

2.如何使用make / makefile

(1)我们来看makefile如何写?

(2)如何与make搭配使用?

3.make和makefile是如何知道可执行程序是比较新的?


前言

本篇文章可以快速让你具备编写makefile的能力,并快速上手使用。


欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================文章来源地址https://www.toymoban.com/news/detail-753208.html

GITEE相关代码:🌟fanfei_c的仓库🌟

=========================================================================


1.什么是make / makefile

make是一条命令,makefile是一个文件,两者搭配使用就可以完成项目自动化构建(类似VS编译器(集成开发环境)的自动化编译)。

make会在当前目录下寻找名字叫"Makefile"或"makefile"的文件,并根据文件内容执行相关指令。

注:文件名必须为上面其一。


2.如何使用make / makefile

(1)我们来看makefile如何写?

首先我们用vim写一段代码,命名为mytest.c。

平时我们想要编译该.c文件如何做呢?

gcc -o mybin mytest.c

 但我们知道平时所用的比如VS编译器可不仅仅干了这一个工作,还有比如工程清理(即清理解决方案,清理目标文件的意思)等工作。

这时候就需要makefile出手了,这也是为什么叫自动化构建的原因。

在makefile中我们要按照如下格式书写语句:

mybin:mytest.c                     //依赖关系
        gcc -o mybin mytest.c  //依赖方法

mybin为目标文件,mytest.c为依赖文件,当然不一定只有这一个依赖文件。 

注:第二行缩进不可去。

我们把刚才提到的工程清理加上:

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

另外我们还可以利用$@代表目标文件(mybin),$^代表所有依赖文件(mytest.c) 

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

到这里还不够,我们要再讲一下如果mytest.c没有改变,那么make执行会重新编译生成新的目标文件mybin么?

答案是不会:如果目标文件所依赖的后面的依赖文件列表中有文件修改时间比目标文件新,那么make就会执行后面所定义的命令生成新的目标文件,否则不会。

那clean呢?

如果我们直接输入make,由于clean没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,所以我们需要使用make clean指令。

但还有另一个问题:

如果当前目录没有clean的同名文件,那还好,不影响每次make都会执行clean。

但一旦当前目录有一个clean的同名文件,此时clean又没有依赖文件,那就麻烦大了,make clean会检测依赖文件列表中的文件有没有clean新,但是clean没有依赖文件,目标文件被认为是最新的,这就导致clean就不会被执行了。

解决方法是将目标文件clean设置为伪目标,用.PHONY修饰。

  • 伪目标的特性是:总会被执行的。

所以最终makefile中我们一般这样写:

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

(2)如何与make搭配使用?

保存好前面的makefile后,我们直接在命令行输入make。

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

make后我们再查看当前目录,会发现多出了目标文件mybin。

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

./mybin 执行该目标文件

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习 我们看该目标文件成功执行。

那我们再来试一下make clean:

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

我们发现make clean也可以成功执行。

=========================================================================

看到这,你已经掌握了make/makefile的基本用法

=========================================================================


3.make和makefile是如何知道可执行程序是比较新的?

对比时间,如果可执行程序.exe修改时间比所有.c文件修改时间新,说明他就是最新的。

那么我们来认识下linux下文件时间的概念:

首先利用stat命令查看某个文件的信息。

【Linux】快速上手自动化构建工具make/makefile,Linux,自动化,运维,linux,学习

我们发现了三个时间:

  • Access  ---   访问时间(非实时更新,占用内存)
  • Modify   ---   修改时间(针对内容的修改)
  • Change ---   改变时间(针对属性的修改)

文件是由内容+属性构成。  


=========================================================================

如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容

🍎博主很需要大家的支持,你的支持是我创作的不竭动力🍎

🌟~ 点赞收藏+关注 ~🌟

=========================================================================

到了这里,关于【Linux】快速上手自动化构建工具make/makefile的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】项目自动化构建工具-make/Makefile

    会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂

    2023年04月09日
    浏览(45)
  • 【Linux】项目自动化构建工具 —— make/Makefile

    前言: 在上一期的博文中,我们对 Linux 下的编译器 - gcc/g++的使用进行了详细的讲解,今天我将给大家讲解的是关于  【Linux】项目自动化构建工具 —— make/Makefile  的详细使用教程!! 本文目录 (一)前情摘要 (二)背景介绍 1、Makefile 的基本认识 2、make 的基本认识 3、

    2023年04月19日
    浏览(60)
  • 【Linux】项目自动化构建工具 - make/Makefile

    会不会写makefile,从侧面说明了一个人是否具备完成大型工程的能力。 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的

    2024年02月04日
    浏览(48)
  • Linux---(六)自动化构建工具 make/Makefile

    make是一个命令。 Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 🎗️会不会写Makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 🎗️一个工程中的源文件数不胜数,其按照类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则

    2024年02月05日
    浏览(43)
  • 【Linux】自动化构建工具-make/Makefile详解

     前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!  订阅专栏阅读:YY的《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本知

    2024年02月16日
    浏览(37)
  • Linux:项目自动化构建工具——make/Makefile

    前言: 本章主要内容有认识与学习 Linux 环境下如何使用项目自动化构建工具—— make/makefile 。 当我们编写一个较大的软件项目时,通常需要将多个源文件编译成可执行程序或库文件。为了简化这个过程,我们可以使用 make 工具和 Makefile 文件。 Makefile 文件可以帮助我们 自动

    2024年02月13日
    浏览(40)
  • [Linux 基础] make、Makefile自动化构建工具

    make是一个命令,Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 在VS编译器中,我们在编译执行代码的时候ctrl+f5就可以了,而在linux中我们需要使用gcc/g++ 配合选项并需要正确的格式才可以完成编译,这样是比较麻烦的,我们make与Makefile可以实现自动化构建

    2024年02月06日
    浏览(40)
  • 【Linux】Linux项目自动化构建工具-make/makefile

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门到精通 🎉代码仓库:小智的代码仓库 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需

    2024年02月12日
    浏览(63)
  • [Linux 基础] make、Makefile自动化构建代码工具

    make是一个命令,Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 在VS编译器中,我们在编译执行代码的时候ctrl+f5就可以了,而在linux中我们需要使用gcc/g++ 配合选项并需要正确的格式才可以完成编译,这样是比较麻烦的,我们make与Makefile可以实现自动化构建

    2024年02月08日
    浏览(47)
  • 【Linux】项目自动化构建工具——make/Makefile及拓展

    1、背景知识 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动化编译”,一旦

    2023年04月27日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包