make工程管理器

来源:互联网 发布:网络对大学生的好处 编辑:程序博客网 时间:2024/05/16 03:53

一:make及makelife的介绍

 工程管理器:make可以管理较多的文件,自动编译管理器
当然这里也可以gcc add.c sub.c mul.c div.c main.c -o main实现多文件编译过程
这里主要介绍工程管理器make及makefile的使用
makefile是make读入的唯一配置文件,如果没有makefile,make也会自动寻找Makefile
如果用户想要使用自己所命名的makefile,则需要执行 make -f (这里用户所命名的makefile)
makefile 编写规则:
1、目标体 target
3、创建每个目标体需要运行的命令,输入命令时需要以tab键开始
列如:
hello:hello.c
      gcc -c hello.c
这里要生成hello这个可执行的文件需要由hello.c编译运行得到,gcc -c hello.c 这个命令就可以完成上述的操作
hello就是目标体,hello.c就是所依赖的文件,那么如果所依赖的文件也没有的话,这个程序会怎么样呢?
hello:hello.o
     gcc -o hello hello.o
hello.o:hello.c
    gcc -c hello.c
可以看出hello.o是hello的依赖,但是文件hello.o这个文件是用户不能编辑的,它由用户可以编辑的hello.c文件生成,所以当目标的依赖不存在时,便会自动往下寻找可以生成的它的指令。
.PHONY :clean(这里指的是伪目标声明,一般在makefile的末尾)
clean:
      rm *.o
输入make指令是并不会执行该指令,可以看出该指令的作用是删除以.o结尾的文件,如果想要执行该指令,则需要输入make clean执行

二:makefile编辑时需要注意的事项

1、当实现目标依赖的文件很多时,可以用户自定义变量,以便减少失误,举例说明
main:main.o add.o sub.o mul.o div.o
      gcc -o main main.o sub.o add.o mul.o div.o
这里如果用户需要添加或更改add.o这个文件的时候,需要改2处,如果有更多行的指令时候,难免会出现错误,如果定义变量的话,就不会出现这样的失误
如:obj=main.o add.o sub.o mul.o div.o
main:$(obj)
     gcc -o main $obj
这里要是更改或添加文件的时候,可以直接在obj里执行 
上面所讲的是用户自定义的变量,这里还有一些系统定义的变量;
$^  指所有的依赖文件   $@:指要实现的目标  $<:实现目标的第一个依赖
makefile 中注释的话使用#
在命令前+@:指取消回显,即该指令不在终端中显示
make :还有自动引导的概念,感兴趣的可以百度,这里不多做介绍

三:修改makefile

makefile大多数情况下不需要用户自己编写,这里介绍在已有makefile文件情况下改变一些指令实现另一个目标的情况
已有文件client(包含使用makefile编译运行成功的例子),这里可以更改几处就可以让自己的项目在终端中成功运行,不需要自己编写makefile(client文件夹可以私聊)
1、bin 文件:这里不需要改动,编译前和编译后都是一个空文件
2、scripts文件:Target:(更改名称写入用户想要生成的可执行文件名称,Modules+=(add等)main
3、include文件:里面包含头文件,需要把自己使用的函数在里面申明
4、add等文件:首先拷贝main文件下的makefile,在建立src文件夹存入自己编写的.c文件
5、main文件:修改里面的.c文件,写入自己编写的主函数另外添加文件包含(#include“../../include/myhead,h”)
6、如果初学者的话可以把上一个用户写的文件删掉,便于自己观察
上述这些都在虚拟机的终端中进行,修改完以后
执行make指令生成自己定义的可执行文件,./(可执行文件)
即可成功运行






0 0
原创粉丝点击