01工程文件目录规划、Makefile编写

image

一、工程文件目录规划

主目录名nginx
a)_include目录:专门存放各种头文件;如果分散:#include "sfaf/sdafas/safd.h"
b)app目录:放主应用程序.c(main()函数所在的文件)以及一些比较核心的文件;
——b.1)link_obj:临时目录,会存放临时的.o目标文件,这个目录不是手工创建,后续用makefile脚本来创建的;
——b.2)dep:临时目录,会存放临时的.d开头的依赖文件,依赖文件能够告知系统哪些相关的文件发生变化,需要重新编译,后续用makefile脚本来创建;
——b.3)nginx.c:主文件,main()入口函数就放到这里;
——b.4)ngx_conf.c:普通的源码文件,跟主文件关系密切,又不值得单独放在 一个目录;
c)misc目录:专门存放各种杂合性的不好归类的1到多个.c文件;暂时为空
d)net目录:专门存放和网络处理相关的1到多个.c文件,暂时为空
e)proc目录:专门存放和进程处理有关的1到多个.c文件,暂时为空
f)signal目录:专门用于存放和信号处理有关的1到多个.c文件;

二、Makefile编写

规划一下makefile文件的编写
a)nginx根目录下我会放三个文件:
——a.1)makefile:是编译项目的入口脚本,编译项目从这里开始,起总体控制作用;
——a.2)config.mk:这是个配置脚本,被makefile文件包含;单独分离出来是为了应付一些可变的东西,所以,一般变动的东西都往这里搞;
——a.3)common.mk:是最重要最核心的编译脚本,定义makefile的编译规则,依赖规则等,通用性很强的一个脚本,并且各个子目录中都用到这个脚本来实现对应子目录的.c文件的编译;
b)每个子目录下(app,signal)都有一个叫做makefile的文件,每个这个makefile文件,都会包含根目录下的common.mk,从而实现自己这个子目录下的.c文件的编译。现在的makefile不支持目录中套子目录(只支持一级目录),除非大家自己修改;
c)其他规划,上边讲过;
——app/link_obj:临时目录,存放.o目标文件
——app/dep:存放.d开头的依赖关系文件;
细节
生成依赖文件和链接文件的位置设定
image

make clean 命令
image

image

PS:赠送书籍《GUN_makefile中文手册》
链接:https://pan.baidu.com/s/1z46By5692uQEO_1QG0PH3w
提取码:2xnu
失效请留言。

posted @ 2022-03-03 20:49  豪崽_ZH  阅读(194)  评论(0)    收藏  举报