首页 > 其他 > 详细

makefile 编写规则

时间:2019-03-29 11:53:35      阅读:117      评论:0      收藏:0      [点我收藏+]

一、makefile 规则

  1、如果没编译过,将所有的  (.c) 文件编译并且链接;

  2、如果有其中的 (.c) 文件改变,编译并链接改变的文件;

  3、如果(.h)文件被修改,编译引用相应的 (.c) 文件, 链接;

  4、在随意修改时间的情况下,会导致编译过程中生成的 (.o 中间文件)与可执行文件时间不一致,此时会编译相应的文件,并链接,最终编译成可执行文件;

二、第一版 makefile:

  例如有2个  .h 文件(utils.h,  player.h, actor.h)和 3个 .c 文件( main.c, player.c, actor.c)需要编译链接:

/*****main.c*********/
#include "utils.h"
#include "player.h"

void main() {
 // do something
}
/*******player.c**********/

#include "utils.h"
#include "actor.h"

bool create_player() {
// do something
}
/****actor.c************/

#include "utils.h"

bool create_actor() {
// do something
}
/*********  makefile   *****************/    
    test : main.o actor.o
        cc -o test main.o actor.o

    main.o : main.c utils.h player.h actor.h
        cc -c main.c

    palyer.o: player.c player.h actor.h utils.h
        cc -o player.c

    actor.o: actor.h utils.h
        cc -o actor.c

    clean:
        rm test ain.o player.o actor.o

 

  优点:可毒性很强,思路清晰 明了;

  缺点:麻烦,重复的依赖过多,当需要编译大量文件时容易出错;

第二版:利用 makefile 的变量;

/*********  makefile   *****************/    
    obj = main.o actor.o    // 跟第一版比较,唯一的区别在这

    test : $(obj)        // 这儿
        cc -o $(obj)      // 这儿

    main.o : main.c utils.h player.h actor.h
        cc -c main.c

    palyer.o: player.c player.h actor.h utils.h
        cc -o player.c

    actor.o: actor.h utils.h
        cc -o actor.c

    clean:
        rm test ain.o player.o actor.o

 

makefile 编写规则

原文:https://www.cnblogs.com/0x-1119/p/10620084.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!