• Linux系统编程04Makefile


    • 文件命名: makefile 或 Makefile

    • 规则:

      • 一个Makefile文件中可以有一个或多个规则

        目标 ...: 依赖 ...

        ​ 命令(shell命令)

        ​ ...

      • 目标: 最终生成的文件

      • 依赖: 生成目标所需要的文件或者目标

      • 命令: 通过执行命令对依赖操作生成目标(命令前必须tab缩进)

    • 命令在执行之前, 需要先检查规则中的依赖是否存在

    • 检测更新, 在执行规则中的命令时, 会比较目标和依赖文件的时间

    • 自定义变量 : 变量名=变量值 var=hello ; 获取变量:$(var)

    • 预定义变量:

      • AR: 归档维护程序的名称, 默认ar
      • CC: C编译器的名称, 默认cc
      • CXX: C++编译器名称, 默认g++
      • $@: 目标的完整名称
      • $<: 第一个依赖文件的名称
      • $^: 所有依赖文件
    • 函数:

      • $(wildcard PATTERN...)
        • 获取指定目录下指定类型的文件列表
        • 参数:PATTERN 指的是某个或多个目录下的对应的某种类型的文件,如果有多个目录,一般使用空格间隔
        • 返回:得到的若干个文件的文件列表,文件名之间使用空格间隔
        • 示例:$(wildcard *.c ./sub/*.c) 返回值格式: a.c b.c c.c d.c e.c f.c
      • $(patsubst <pattern>,<replacement>,<text>)
        • 查找中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式,如果匹配的话,则以替换。
        • 返回:函数返回被替换过后的字符串
        • 示例:$(patsubst %.c, %.o, x.c bar.c) 返回值格式: x.o bar.o

    示例:

    target = main
    src = $(wildcard *.c)
    objects = $(patsubst %.c,%.o,$(src))
    CC = gcc
    CPPFLAGS = -I ./
    
    $(target): $(objects) 
    	$(CC) -o $@ $^ 
    
    %.o: %.c
    	$(CC) -g -c $< $(CPPFLAGS)
    
    .PHONY: clean
    clean: 
    	rm -f $(objects) $(target)
    
  • 相关阅读:
    切片
    类型断言
    方法表达式
    接口
    函数式编程
    多人聊天室
    反射
    yarn基础解释
    webpack基础概念
    ssh登陆报错:packet_write_wait: Connection to x.x.x.x port 22: Broken pipe
  • 原文地址:https://www.cnblogs.com/anqwjoe/p/16793181.html
Copyright © 2020-2023  润新知