工程管理器及makefile模板的使用

来源:互联网 发布:chart.js 更新数据 编辑:程序博客网 时间:2024/05/16 19:49
1.概念和基础
工程管理器,顾名思义,是指管理较多的文件 
Make工程管理器也就是个“自动编


译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件


而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的


编译工作。
makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的


编写规则。在一个makefile中通常包含如下内容:
   
a.需要由make工具创建的目标体(target),通常是目标文件或可执行文件;
    


b.要创建的目标体所依赖的文件;
c.
创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键


)开头;
makefile格式:
target:dependency_files
<Tab>command  /*该行必须由制表符开头*/
例如:
hello:hello.o
gcc -o hello hello.o
hello.o:hello.c
gcc -c hello.c
使用Makefile的方法是直接在命令行中输入make,如果工程管理器的名字不是


makefile或者Makefile,那就输入make -f 名字。
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”。
例如:
.PHONY : clean
clean :

rm –f hello main.o func1.o func2.o
第一行叫做伪目标的声明,作用在于当伪目标和可执行文件名字一致时,输入


make 名字,是执行伪目标而不是可执行文件。
在make中可以使用变量:
变量的定义为:name=dependency_files dependency_files1 dependency_files2 


变量的使用为:
target:$(name)
gcc $(name) 
在makefile中,存在系统默认的自动化变量
$^:代表所有的依赖文件


$@:代表目标


$<:代表第一个依赖文件
例:
hello: main.o func1.o func2.o

gcc main.o func1.o func2.o -o hello
    
    hello: main.o func1.o func2.o
         
gcc $^ -o $@
 
Makefile中“#”字符后的内容被视作注释。




@:取消回显
例如


hello: hello.c

@gcc hello.c –o hello
执行后将不会输入 gcc hello.c -o hello这一行。
2.makefile简单的使用
其实对于我来说,以后绝大部分项目都不需要自己编写makefile,可以有固定的


模板。虽然自己写makefile可以增加对编译过程的理解,但用模板可以节约时间



下面就是一个简单的例子,通过工程管理器来对加减乘除四则运算的函数进行编


译。
四则运算的函数:


主函数:


打开模板:


里面有4个文件夹:bin,include,main,scripts分别存放着二进制文件,函数包,


主函数和脚本。除此之外还有一个Makefile。
这个模板中含有3个版本的Makefile,分别存放在main,scripts以及和文件夹并


列的那个。
1.把main文件夹复制4份,分别改名add sub mul和div,然后把.c文件分别放入这

些文件夹中的src文件夹中,把主函数安装同样的方法放入。


2.在include文件夹中写.h文件,里面存放四个函数的函数声明。
3.在主函数中链接头文件。
4.打开scripts文件夹中的Makefile,修改其中的第四行和第七行,第四行改为自


己所需要的最终可执行文件的文件名,第七行增加所需要的文件夹。



最后在命令行中输入make就大功告成了。


注意:修改的一定是scripts文件夹中的Makefile。



模板下载:http://pan.baidu.com/s/1qYJdyqS

点击打开链接


0 0
原创粉丝点击