make工程管理器

工程管理器make————如何编写makefie文件(其关键就是编写makefile文件)

1、什么是工程?

多个源文件+其他文件(图片、头文件、脚本文件)

2、工程管理器的作用

编译多个源文件(自动编译,make一下);(如果没有makefile:如:gcc + 所有源文件 -o 可执行文件;)

3、make的工作是依赖于makefile文件(makefile 文件是一种脚本文件,批处理:一次处理几个步骤)

4、编写makefile的语法:

三要素:目标、依赖、命令

格式:

目标:依赖

(tab键)命令

目标:最终生成的文件;(如:hello)

依赖:生成目标时所需要的文件(如:hello.c)

命令:生成目标时,所需要执行的命令(如:gcc hello.c -o hello)

gcc -c hello.c (该命令可以生成 hello.o文件; (.o 目标文件)(.a 静态库文件))

 

5、执行顺序(从上往下,寻找跳跃式执行)

在命令行中输入以下命令:

make :默认从第一个目标体开始执行

make + 目标体 :从对应的目标体开始执行

如果目标体后面的依赖文件是一个目标的话,先执行依赖对应的目标,在执行目标体的命令。

自动编译:源代码修改,或者编译生成的文件不存在,make一下自动编译。

6、关于伪目标的问题

所谓真目标就是可以通过执行命令生成目标文件,那么我们说,假目标就是执行命令后,无法生成目标文件,只是执行了相应的功能命令

.PHONY: (伪目标名)

伪目标执行不会生成文件,只会执行对应的命令;如:下图clean这个目标不会产生,只会执行它对应的命令。

 7、相关语法

@  +(命令):可以取消回显;

echo +(内容):可以在命令行中直接显示;

make -f  +(文件名) :可以指定某个文件(否则系统会默认makefile)

$@ :标识目标文件的名称 (上图中gcc语句中的hello文件,可以用该符号代替)

$^ :表示所有的依赖文件(上图中gcc语句中的hello.o文件,可以用该符号代替)

$< :表示第一个依赖文件

练习1:编写并运用makefile;

要求:写一个hello.cpp, 编写makefile, 命令行中不用回显命令,需要提示:make done!;将可执行文件main复制到创建好的bin 文件中。

伪目标:clean、install

@ : 取消回显;echo: 将内容显示在命令行;

main:function.cpp main.cpp
	@g++ function.cpp main.cpp -o main
	@echo have done!
.PHONY:clean
clean:install
	@rm -rf main
	@echo delete done!
install:
	@cp main bin
	@echo cp done!

练习2:写一个main的可执行文件的makefile,有三个.c文件;

要求:将三个add.c、sub.c、main.c文件 编译伪.o文件后,在生成main可执行文件;还要能够一键make删除.o文件和main可执行文件。

main:add.o sub.o main.o
	gcc $^ -o $@
add.o:add.c
	gcc -c add.c
sub.o:sub.c
	gcc -c sub.c
main.o:main.c
	gcc -c main.c
.PHONY:clean
clean:
	rm -rf add.o sub.o main.o

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值