初识makefile

来源:互联网 发布:python 驼峰转 编辑:程序博客网 时间:2024/06/05 22:45
makefile的基本语法与变量
1.makefile是什么?    

    一个工程的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。

    为工程编写makefile的好处是能够使用一行命令来完成自动化命令来完成自动化编译,一旦提供了正确的makefile,编译整个工程你所要做的唯一的一件事就是在shell提示符下输入make命令,整个工程完全自动编译,极大的提高了效率。

    makefile(在其他系统上可能是另外的文件名)在绝大多数的IDE开发环境中都在使用。    PSIDEintegroted Development Enviroment,集成开发环境,是用于提供程序开发环境的应用程序,一般包括代码编译器、编译器、调试器和图形用户界面工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件功能服务套。所有具备这一特性的软件或者软件套都可以叫集成开发环境,如:Vistual stdio系列)

 

2.基本的makefile规则:

目标(target即想要建立的文件):目标文件1目标文件2

<tab>  gcc -o欲新建的可执行文件  目标文件1目标文件2

 

1)在makefile#仅代表注释

2<tab>需要在命令行的第一个字符处

3)目标(target)与相关文件(目标文件)之间需要以隔开

4makefile以文件名:文件名的形式比较冒号右边的文件是不是比左边的文件有更新,如果有更新则执行下一行的程序代码

 

3.实例

例:

编辑makefile来建立新的规则,此规则的目标称为clean:

makeclean:

     清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。

#vi makefile


  

(注意执行命令前应该先使用<tab>


#make clean

 

输出结果:


 

  

通过shell script的变量来简化makefile:

 

#vi makefile

 

 

$@可以代替main,代表目前的目标




 #make clean

 


但是与bash shell script的语法有点不太相同,变量的基本语法为:

 

1)变量与变量的内容以“=”隔开,同时两边可以具有空格;

2)变量左边不可以有<tab>。例如上面范例第一行LIBS左边不可以有<tab>

3)变量与变量内容在“=”两边不能具有

4)在习惯上,变量最好是以大写字母为主;

5)运用变量时,以${变量}或者$(变量)使用;

6)在该shell的环境变量是可以被套用的,例如提到的CFLASS这个变量;

7)在命令行模式也可以定义变量。

 

关于环境变量:

既可以在make命令前定义出这个变量




也可以像“IBLS”在脚本文件中添加。

 

但是如果同时使用这两种方法添加同一个环境变量,并且内容不同时,存在一个优先原则:

 

1make命令行后面加上的环境变量为第一优先;

2makefile里面指定的环境变量为第二优先;

3shell原本有的环境变量为第三优先。

 

0 0
原创粉丝点击