首页 > 代码库 > Makefile的编写

Makefile的编写

makefile介绍

  makefile的功能是管理源文件的编译链接,在makefile我们可以定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。具体可以参考:

  http://blog.csdn.net/ruglcc/article/details/7814546/

  http://www.cnblogs.com/liangxiaxu/archive/2012/07/31/2617384.html

 

makefile规则

target1: prerequisites1,prerequisites2,...
           command1
target2: prerequisites1,prerequisites2,...
           command2
... 

      target: 一个目标文件,可以是Object File,也可以是执行文件。

   prerequisites: 要生成那个target所需要的文件或是目标。

   command: 也就是make需要执行的命令,可以是任意的shell命令

 

makefile举例
  一、这里以一个简单的C程序作为例子,在一个文件夹下有下列的文件:

    1、make.exe
     这是一个可以执行makefile的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。
    2、main.c

1 #include<stdio.h>
2 int main(){
3     printf("Hello World!\n");
4 }

    3、makefile

test: main.o
    gcc -o test main.o
main.o:main.c
    gcc -c -o main.o main.c
clean: 
    del test.exe main.o 

   二、我们在此目录下打开shell窗口,输入“make“,enter,就可看见make已经在进行编译,在此文件目录下多了:

    1、main.o

    2、test.exe

        其实在编译时,make是根据makefile文件进行编译的。首先要编译test,而又找不到main.o,于是就会先编译main.o。编译main.o时先找到编译所需的main.c,然后再执行"gcc -c -o main.o main.c"语句生成main.o,此时test所需的文件已生成了,于是执行"gcc -o test main.o"生成test.exe。

    我们也可以在shell中输入”make clean“在执行clean,此时的test.exe 和main.o 就会被删除。

 

    //End

Makefile的编写