Makefile项目管理

Makefile项目管理

一、说明

1)功能说明

1.能自动添加头文件路径
2.能自动查找 c文件并编译
3.可对指定文件夹配置编译规则
4.此项目管理的功能及复杂度虽小,但适用性挺强的(管理小中型项目应该没有问题 0_0 ) ``

2)适用范围

适用于linux平台下项目管理。

3)关于作者

1.此项目管理开源(GPL),但是在使用或转载时请标注出处,感谢使用(虽然简单,花了点时间 (-_-)! )
2.如果有bug或者其它问题可联系 QQ(露.舒达): 2085827949

二、相关文件及说明

.
├── bin_dir                 # 项目文件生成路径
│   ├── bin_lap.bin         # 最终可执行文件
│   ├── dis_lap.dis         # 符号排列表
│   ├── lap_3.S              # 反汇编文件
│   └── lap.a                  # 临时文件(编译中间文件)
├── github.sh              # git管理脚本
├── LapLib                  # 打算构建一个自己的库(封装一下常用函数,暂未实现)
│   └── common
│       └── LapInc.mk       # 用于添加要链接的动态库
├── LapManager              # 项目管理核心文件
│   ├── getdir.sh               # 用于搜寻.h与.c文件,并将将自动生成的文件存放在.auto_dir目录中
│   ├── makeRull.mk             # 子Makefile编译规则 
│   └── mkconfig.mk             # 用于配置Makefile的编译规则
├── .auto_dir               # 由getdir.sh自动生成
│   ├── lap_alib.mk             # 编译后文件路径
│   ├── lap_head.mk             # 项目所有头文件路径
│   └── Makefile                # 要编译的路径
├── LICENSE
├── Makefile                # 顶层Makefile,导出环境变量,运行getdir.sh ,生成追终可执行文件
├── mk                      # 编译脚本,可用做一系列复杂动作(eg: 指定ARM GCC路径)
├── project                 # 工程文件夹(任意命名)
│   ├── lap_bin.o               # 生成的的库文件,最终由顶层Makefile生成可执行文件
│   ├── main.c
│   ├── main.h
│   ├── main.o
│   └── Makefile            # 子Makefile,每个要编译的文件夹必须包含此Makefile
└── ReadMe.txt              # 介绍文件

三、工作原理当在顶层文件夹’make’

时,会执行顶层目录Makefile。

1)顶层Makefile会执行以下工作:

1.导出环境变量GCC交叉编译链
2.导入配置文件(LapManager/mkconfig.mk)
3.创建bin_dir与.auto_dir文件夹
4.执行脚本(LapManager/getdir.sh),用于搜寻头文件与c文件并确定要编译的文件路径,并将搜寻结果生成对应文件放入.auto_dir/文件中
5.执行.auto_dir/Makefile 编译项目
6.链接所有子文件夹下的lap_bin.o
7.生成最终可执行文件bin_dir/bin_lap.bin8.生成反汇编文件及dis文件

2)自动搜寻脚本 getdir.sh

1.将搜寻到的头文件路径写入.auto_dir/lap_head.mk文件中(编译时会自动包含此配置文件)
2.在项目工程中搜寻Makefile文件,将搜寻到的路径写入.auto_dir/Makefile
代表将来要编译的目录
3.在项目工程中搜寻Makefile文件,将搜寻到的路径写入.auto_dir/lap_alib.mk 代表将来要链接的库路径
4.在搜寻时会匹配mkconfig.mk中’CONFIG_DONT_SCAN’变量,用于屏蔽特定文件夹

3)编译规则

每个子Makefile都会包含LapManager/makeRull.mk ,makeRull.mk会自动寻找当前目录下的c文件,
并按照规则编译成静态库文件(最终由顶层Makefile链接), 故而,每个要编译的文件目录必须要
包含此Makefile,当然子Makefile也可以单独设置编译规则,例如 是否静默编译,是否手动指定 编译文件等,灵活性较高。

4)其它说明

1.配置文件: 编译时的一些特性可以通过LapManager/mkconfig.mk文件进行指定,例如,是否禁止某一文件夹参与编译。
2.链接动态库: 指定动态库链接,可通过修改LapLib/common/LapInc.mk来达到目的。
3.所有的文件名,以及编译好的路径,都可以自定义(通过修改顶层Makefile对应的名称即可)
4.一定要赋予脚本文件对应的执行权限 (可使用命令: sudo chomd -R 755 ./ )

四、项目管理链接

Gitee:Makefile项目管理链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值