zoukankan      html  css  js  c++  java
  • Makefile 简介(一)

    Makefile/makefile 简介

    makefile 规则

    target :prerequisites    
    command
    

    target: 目标文件
    prerequisites: 依赖文件
    command: 执行命令
    命令执行之前先检查依赖

    • 依赖存在:执行命令
    • 依赖不存在: 向下检测其他的规则,看看是否有一个规则是用来生成这个依赖,如果找到, 执行该规则中的命令

    检测更新

    • 在执行规则中的命令的时候, 会比较 目标和依赖文件时间
    • 如果依赖的时间比目标的时间晚,需要重新生成目标
    • 如果依赖的时间比目标的时间早, 目标不需要更新, 对应规则中的命令不需要执行

    自动变量

    $@: 规则中的目标
    $<:规则中的第一个人依赖
    $^:规则中的所有依赖 
    自动变量只能在规则的命令中使用
    

    模式匹配

    a.o:a.c
        gcc -c a.c
    b.o:b.c
        gcc -c div.c
        
    %.o:%.c
    	- %: 通配符, 匹配一个字符串
    	- 两个%匹配的是同一个字符串
    
    以上的代码可以替换成:
    %.o:%.c
    	gcc -c $< -o $@
    

    一个简单的makefile

    https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html

    edit : main.o kbd.o command.o display.o 
           insert.o search.o files.o utils.o
            cc -o edit main.o kbd.o command.o display.o 
                       insert.o search.o files.o utils.o
    
    main.o : main.c defs.h
            cc -c main.c
    kbd.o : kbd.c defs.h command.h
            cc -c kbd.c
    command.o : command.c defs.h command.h
            cc -c command.c
    display.o : display.c defs.h buffer.h
            cc -c display.c
    insert.o : insert.c defs.h buffer.h
            cc -c insert.c
    search.o : search.c defs.h buffer.h
            cc -c search.c
    files.o : files.c defs.h buffer.h command.h
            cc -c files.c
    utils.o : utils.c defs.h
            cc -c utils.c
    clean :
            rm edit main.o kbd.o command.o display.o 
               insert.o search.o files.o utils.o
    
    
  • 相关阅读:
    AutoFac
    MEF 基础简介 四
    MEF 基础简介 三
    MEF 基础简介 二
    MEF 基础简介 一
    Ioc原理理解
    .NET里面 abstract class和Interface有什么区别以及用法的展现?
    .NET-ORM框架EF-Code First代码优先
    SQL SERVER PIVOT与用法解释
    SQL Server 中的 NOLOCK 到底是什么意思?
  • 原文地址:https://www.cnblogs.com/arvinhuang/p/12708160.html
Copyright © 2011-2022 走看看