zoukankan      html  css  js  c++  java
  • makefile编写

    makefile: 管理项目。

    命名:makefile Makefile --- make 命令

    1 个规则:

    目标:依赖条件
    (一个tab缩进)命令

    1. 目标的时间必须晚于依赖条件的时间,否则,更新目标

    2. 依赖条件如果不存在,找寻新的规则去产生依赖条件。

    ALL:指定 makefile 的终极目标。


    2 个函数:

    src = $(wildcard ./*.c): 匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。 src = add.c sub.c div1.c

    obj = $(patsubst %.c, %.o, $(src)): 将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o

    clean: (没有依赖)

    -rm -rf $(obj) a.out “-”:作用是,删除不存在文件时,不报错。顺序执行结束。

    3 个自动变量:

    $@: 在规则的命令中,表示规则中的目标。

    $^: 在规则的命令中,表示所有依赖条件。

    $<: 在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将依赖条件列表中的依赖依次取出,套用模式规则。

    模式规则:

    %.o:%.c
    gcc -c $< -o %@

    静态模式规则:

    $(obj):%.o:%.c
    gcc -c $< -o %@

    伪目标:

    .PHONY: clean ALL

    参数:
    -n:模拟执行make、make clean 命令。

    -f:指定文件执行 make 命令。 xxxx.mk

    src = $(wildcard *.c)
    targets = $( %.c, %, $(src))
    
    CC = gcc
    CFLAGS = -Wall -g
    
    all:$(targets)
    
    $(targets):%:%.c
        $(CC) $< -o $@ $(CFLAGS)
    
    .PHONY:clean all
    clean:
        -rm -rf $(targets) test
    src = $(wildcard ./src/*.c)  # ./src/add.c ./src/sub.c ...
    obj = $(patsubst ./src/%.c, ./obj/%.o, $(src))  # ./obj/add.o ./obj/sub.o ...
    
    inc_path=./inc
    
    myArgs= -Wall -g 
    
    
    ALL:a.out
    
    a.out: $(obj)
        gcc $^ -o $@ $(myArgs) 
    
    $(obj):./obj/%.o:./src/%.c
        gcc -c $< -o $@ $(myArgs) -I $(inc_path)  
    
    clean:
        -rm -rf $(obj) a.out
    
    .PHONY: clean ALL
  • 相关阅读:
    基于代码驱动:处理有依赖关系接口
    Jenkins部署git+python项目实现持续集成
    jenkins安装和邮件配置
    单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)
    装饰器做权限认证
    jquery + ajax 提交数据报错
    前端添加复选框checkbox 提交到django后台处理
    django的自定义权限
    代码发布系统实现思路
    Django (二) 常用字段及 ORM
  • 原文地址:https://www.cnblogs.com/qijunzifeng/p/13985135.html
Copyright © 2011-2022 走看看