linux之makefile的学习(一)贴出的一个模板的makefile的编写。模板makefile的编写简而言之以后我们可以非常方便的调用模板,不需要繁琐的修改每个makefile的内容。
下面贴出一个用命令编写的makefile,针对的是上一篇中cal计算器的makefile的编写
1.首先修改总控makefile
上一篇的模板就不贴出来了,直接上干货
include scripts/Makefile
.PHONY: all mm mc clean
all : $(Target)
mm:
cd main && $(MAKE)
cd add && $(MAKE)
cd sub && $(MAKE)
cd mul && $(MAKE)
cd div && $(MAKE)
mc:
cd main && $(MAKE) clean
cd add && $(MAKE) clean
cd sub && $(MAKE) clean
cd sub && $(MAKE) clean
cd mul && $(MAKE) clean
$(Target) : mm
@$(CC) -o $(Target) $(Allobjs) -lsqlite3 -lpthread
clean : mc
@rm -rf $(Target)
嵌套执行的两种语法:
- cd <子目录> && $(MAKE)
$(MAKE) -C <子目录>
其实就是将函数实现的功能全部用命令一一表达出来,可以对照看一下。
2. scripts/Makefile的编写
CC := gcc -lpthread -lsqlite3
Target := cal
Modules += main sub div mul add
Allobjs :=main/src/*.o add/src/*.o sub/src/*.o div/src/*.o mul/src/*.o
3. 各个功能目录下的makefile的编写
这里就不把每个目录下的makefile贴出来了,大致差不多
add下的makefile
include ../scripts/Makefile
all:
gcc -c src/add.c -o src/add.o
clean:
rm -rf src/add.o
不参考任何资料,独立的编写一个makefile是非常重要的。
PS:
建立一个完整的项目还有许多目录需要添加,参考内核管理代码的风格
各个目录的分类参考内核的分类
include 放头文件
lib 放库文件
tools 放工具
doc 放文档
scripts 放脚本(makefile实际上就是脚本文件)