【Linux】快速学习make/makefile

目录

一、Linux系统中的make命令与makefile文件

二、makefile文件的编写

总结


一、Linux系统中的make命令与makefile文件

在linux系统中make是一个非常重要的编译命令,不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或makeinstall。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile 带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

二、makefile文件的编写

先简单写一个 test.c 文件

#include<stdio.h>
 
int main()
{
  printf("Hello world!!!");
  return 0;
} 

再写一个makefile文件

test.exe:test.c
  gcc -o test.exe test.c
.PHONY:clean
clean:
  rm -f test.exe

输入make,即可完成文件编译,输入make clean 即可完成文件清除。

mikefile文件详解如下图:

在写依赖方法时,我们可不可以用某种占位符来代替目标文件与源文件?进一步,可不可以用某个变量名来代替,目标文件名与源文件名?

对于第一个问题,我们可以用$@来代替目标文件,$^来代替源文件;对于第二个问题,makefile文件支持赋值语句,如下面代码:

bin=test.exe
src=test.c

$(bin):$(src)
    gcc -o $@ $^
.PHONY:clean
clean: 
    rm -f $(bin) 

由上图我们发现,在使用make语句时,会将依赖关系打印出来,那依赖关系语句可以不打印吗?可以使用其他语句来打印我们想打印的内容吗?

对于第一个问题,我们可以在依赖关系前价格@;对于第二个问题,我们可以增加其他Linux命令语句,如下面代码:

bin=test.exe
src=test.c

$(bin):$(src)
    @gcc -o $@ $^
    @echo "compiler $(src) to $(bin)..."
.PHONY:clean
clean:
    @rm -f $(bin)
    @echo "clean project..."    

执行效果如下:


总结

通过以上内容,我们可以快速的写出一个实用的makefile文件。

相关推荐

  1. Linux C++快速入门

    2024-03-22 15:44:02       53 阅读
  2. Linux 快速上手

    2024-03-22 15:44:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 15:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 15:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 15:44:02       87 阅读
  4. Python语言-面向对象

    2024-03-22 15:44:02       96 阅读

热门阅读

  1. nginx的location规则与其他功能

    2024-03-22 15:44:02       37 阅读
  2. [json.exception.type_error.316] invalid UTF-8 byte报错

    2024-03-22 15:44:02       43 阅读
  3. 单例设计模式:Python魔法中的唯一守护者

    2024-03-22 15:44:02       42 阅读
  4. 微信小程序网络通信

    2024-03-22 15:44:02       41 阅读
  5. COPY requires at least two arguments, docker COPY 报错

    2024-03-22 15:44:02       38 阅读
  6. nginx的使用总结

    2024-03-22 15:44:02       37 阅读
  7. 计算机网络安全试题

    2024-03-22 15:44:02       40 阅读
  8. node.js nvm命令切换到node 14

    2024-03-22 15:44:02       43 阅读
  9. 面试十二、装饰器模式

    2024-03-22 15:44:02       42 阅读