2025年3月16日 星期日 甲辰(龙)年 月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Makefile

初识makefile

时间:01-20来源:作者:点击数:41

Makefile的规则

目标 : 需要的条件 (注意冒号两边有空格)

命令(注意前面用tab键开头)

解释一下:

1 目标可以是一个或多个,可以是Object File,也可以是执行文件,甚至可以是一个标签。

2 需要的条件就是生成目标所需要的文件或目标

3 命令就是生成目标所需要执行的脚本

总结一下,就是说一条makefile规则规定了编译的依赖关系,也就是目标文件依赖于条件,生成规则用命令来描述。在编译时,如果需要的条件的文件比目标更新的话,就会执行生成命令来更新目标。

下面举个简单的例子说明。如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。

  • 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

下面来说说自己的总结:

我写了三个文件:hello.c test.c test.h。内容如下:

hello.c:

  • #include <stdio.h>
  • #include "test.h"
  • void main(void)
  • {
  • char s[] = "Bye~";
  • printf("Hello World!\n");
  • test(s);
  • }

test.h:

  • #ifndef __TEST_H_
  • #define __TEST_H_
  • #include <stdio.h>
  • int test(char *s);
  • #endif

test.c:

  • #include "test.h"
  • int test(char *s)
  • {
  • printf("%s...\n",s);
  • return 1;
  • }

makefile如下:

  • main : hello.o test.o
  • gcc -o main1 hello.o test.o
  • hello.o : hello.c
  • gcc -c hello.c
  • test.o : test.c test.h
  • gcc -c test.c
  • clean :
  • rm hello.o test.o

其中,第一行的main只是一个标签,怎样写都可以。第二行的main1才是最终生成的目标文件,并且目标和依赖的位置可以互换,比如:

  • gcc hello.o test.o -o main1
  • 如果工程中包含头文件,只需要在第一行的依赖中写出来,第二行不用写:
  • test.o : test.c test.h
  • gcc -c test.c
  • make完了之后再make clean一下,清除临时文件。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐