zoukankan      html  css  js  c++  java
  • Makefile

    Makefile包括以下内容:

    *需要由make工具创建的目标体(target),目标体通常是目标文件、可执行文件或是一个标签。

    *要创建的目标体所依赖的文件(dependency_file)。

    *创建每个目标体时需要运行的命令(command)

    格式:

    target:dependency_file

      command

    command前面是“Tab”符,如果没有会出错。

    例子:

    exeprogram:main.o command.o display.o insert.o search.o files.o
        gcc -o exeprogram main.o command.o display.o insert.o search.o files.o
    main.o:main.c defs.h
        gcc -c main.c -o main.o
    command.o:command.c command.h
        gcc -c command.c -o command.o
    display.o:display.c  dispaly.h
        gcc -c display.c -o display.o
    insert.o:insert.c insert.h
        gcc -c insert.c -o insert.o
    search.o:search.c search.h
        gcc -c search.c -o search.o
    files.o:files.c files.h
        gcc -c files.c -o files.o
    clean:
        rm exeprogram main.o command.o display.o insert.o search.o files.o

    想要删除可执行文件以及所有的中间目标文件,执行“make clean”即可

    Makefile变量(使用变量易维护)

    变量定义的两种方式:

    递归展开——>VAR=var

    简单扩展——>VAR: =var

    变量的使用格式为$(VAR).

    上面的例子可以改写为:

    OBJS=main.o command.o display.o insert.o search.o files.o
       
    exeprogram:$(OBJS)
        gcc -o exeprogram $(OBJS)
    main.o:main.c defs.h
        gcc -c main.c -o main.o
    command.o:command.c command.h
        gcc -c command.c -o command.o
    display.o:display.c  dispaly.h
        gcc -c display.c -o display.o
    insert.o:insert.c insert.h
        gcc -c insert.c -o insert.o
    search.o:search.c search.h
        gcc -c search.c -o search.o
    files.o:files.c files.h
        gcc -c files.c -o files.o
    clean:
        rm exeprogram $(OBJS)

    Makefile的自动变量
    $*      不包含扩展名的目标文件名称
    $+      所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
    $<      第一个依赖文件的名称
    $?       所有时间戳比目标文件晚的依赖文件,并以空格分开
    $@     目标文件的完整名称
    $^      所有不重复的依赖文件,以空格分开
    $%     如果目标是归档成员,则该变量表示目标的归档成员名称

    OBJS=main.o command.o display.o insert.o search.o files.o
    
    CC=gcc
    CFLAGS=-Wall -O -g
       
    exeprogram:$(OBJS)
        $(CC) $^ -o $@
    main.o:main.c defs.h
         (CC) $(CFLAGS) -c $< -o $@
    command.o:command.c command.h
         (CC) $(CFLAGS) -c $< -o $@
    display.o:display.c  dispaly.h
         (CC) $(CFLAGS) -c $< -o $@
    insert.o:insert.c insert.h
         (CC) $(CFLAGS) -c $< -o $@
    search.o:search.c search.h
         (CC) $(CFLAGS) -c $< -o $@
    files.o:files.c files.h
         (CC) $(CFLAGS) -c $< -o $@
    clean:
        rm exeprogram $(OBJS)
  • 相关阅读:
    读取XML直接转换为类对象
    EF 连接sql2000
    Web自动化测试 七 ----- 鼠标、键盘操作
    Web自动化测试 六 ----- selector选择
    Web自动化测试 五 ----- selenium的等待和切换
    Web自动化测试 四 ----- python selenium 八大元素定位
    Web自动化测试 三 ----- DOM对象和元素查找
    Web自动化测试 二 ----- HTML
    Web自动化测试 一
    HTTP和HTTPS的区别
  • 原文地址:https://www.cnblogs.com/itsad/p/7881737.html
Copyright © 2011-2022 走看看