工程管理器make
什么是工程?很多文件构成的软件代码---10000个.c文件如何编译?--工程管理--作用?
1.自动编译,管理代码(git/github)
2.makefile规定如何自动编译 / 按照时间戳
3.脚本文件:批处理 脚本编程--测试,运维 (python)
4.三要素:目标,依赖,命令
目标:依赖
tab 命令
例:
hello:hello.o
gcc hello.o -o hello
hello.o:hello.c
gcc -c hello.c
命令前加@隐藏命令
例
hello:hello.o
@gcc hello.o -o hello
hello.o:hello.c
@gcc -c hello.c
echo make done隐藏提示
例
@echo make done
伪目标
PHNOY:clean install
clean:
rm -f hello
install:
mv hello /bin
make -f makefile1
-f指定通过哪个makefile编译文件
vim add.c
int add(int a,int b)
{
return a+b;
}
vim sub.c
int sub(int a,int b)
{
return a-b;
}
vim mul.c
int mul(int a,int b)
{
return a*b;
}
vim div.c
int div(int a,int b)
{
return a/b;
}
vim main.c
#include<stdio.h>
int main()
{
printf(“add = %d\n”,add(6,3));
printf(“sub = %d\n”,sub(6,3));
printf(“mul = %d\n”,mul(6,3));
printf(“div = %d\n”,div(6,3));
}
vim makefile
add.o:add.c
gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
div.o:div.c
gcc -c div.c
cal:main.o add.o sub.o mul.o div.o
gcc main.o add.o sub.o mul.o div.o
.PHONE:clean
clean:
rm -f cal main.o add.o sub.o mul.o div.o
作业
.c变成.o的好处:节省编译时间
Makefile
1、根目录Makefile --总控的Makefile
作用:1.进入各个功能子目录执行make命令;2.将所有.o文件链接生成可执行文件)
2、功能目录的Makefile --将src目录里的.c文件编译生成.o文件
3、Scripts的Makefile --定义变量(相当于C语言中的头文件)
项目的Makefile顺序:先看scripts的Makefile,再看总控Makefile,其次看功能目录Makefile