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
- Make工程管理器(读书笔记)
- Make工程管理器
- Make工程管理器
- Make工程管理器
- 【Linux】工程管理器Make
- 工程管理器make
- 初识工程管理器make
- 工程管理器make(二)
- 工程管理器make
- make工程管理器
- 工程管理器make
- make工程管理器
- Linux工程管理器make
- 工程管理器make
- 工程管理器make
- make工程管理器
- 工程管理器make
- Make工程管理器
- HDU 1029 Ignatius and the Princess IV【】
- c程序设计(4)函数课后习题
- 面试准备
- 51nod 1035 最长的循环节
- 20170120
- make工程管理器
- 001_Oracle数据库、SQL语言的介绍
- C++ I/O流常用控制符
- HDU1587-Flowers
- leetcode-453-Minimum Moves to Equal Array Elements
- android之给其他应用提供拍照信息
- Activiti工作流引擎的官方实例配置详细步骤
- 【C++心路历程21】NOIP2003普及组复赛第4题数字游戏
- 替罪羊树学习总结