make学习

make是一种编译工具,它可以用来编译包含多个源文件的大工程。当工程中某一个文件被修改后,用make可以实现单独编译有变动的源文件,从而避免重新编译整个工程。make命令的执行需要通过编写makefile脚本来实现。

  1.   Makefile的基本规则

目标文件:依赖文件

响应命令

eg: 

  

1 myapp:hello.c
2 
3   gcc hello.c -o hello //行首按TAB键 4 5 .PHONY:clean 6 7 clean: 8 9 rm *.o myapp

 

   程序第一行表示myapp最终目标文件,即最后生成的目标文件;hello.c为依赖文件,表示生成myapp所需要的源文件,

           gcc hello.c -o hello为响应命令,

   .PHONY用来显示指定伪目标文件clean,

   伪目标文件不代表一个真正的文件名,在执行make时,可以通过指定一个伪目标文件来执行其所在的规则中定义的命令。

   一般在makefile文件最后都要有个伪目标clean,用来清理工程编译的文件。

   ×makefile文件保存命名为Makefile

 

  2.  make命令的执行

make命令会在当前的工作目录下搜索Makefile文件,并读取执行makefile文件或Makefile文件,若是在当前工作目录下没有找到这两个文件,make将不读取任何文件。

直接敲入make命令,即可执行文件的编译,若是makefile文件有修改,修改后执行make,将提示myapp is up to date.表示myapp有更新。

 

  3.     多文件makefile文件的编写

  • 第一步编写可执行文件生成规则
  • 第二步编写各目标文件生成规则
  • 编写伪目标规则
    myapp:main.o fun1.o fun2.o                       //第一个规则目标myapp就是最终目标
        gcc -o myapp main.o fun1.o fun2.o            //将后3个目标文件生成可执行文件Myapp
    
    main.o:main.c fun1.h fun2.h
        gcc -c main.c                               //生成目标文件Main.o
    
    fun1.o:main.c fun1.h fun2.h                      //生成fun1.o
        gcc -c fun1.c
    
    fun2.o:main.c fun1.h fun2.h
        gcc -c fun2.c
    
    .PHONY:clean                                    //伪目标规则
    clean:
    rm *.o myapp
    

      

 

 

posted on 2013-09-10 22:12  馒头家族  阅读(204)  评论(0编辑  收藏  举报

导航