参考linux内核的Makefile编写了一个通用的makefile,它可以用来编译应用程序
①支持多个目录,多层目录,多个文件
②支持给所有的文件设置编译选项
③支持给某个目录设置编译选项
④支持给某个文件单独设置编译选项
⑤简单好用
在顶层目录下游main.c sub.c 在子目录下有sub2.c sub3.c 它们的头文件统一放在include下



第一步,在Makefile_and_readme下面的Makefile 和Makefile.build拷贝到顶层目录,然后再在子目录下面创建一个空白文件Makefile


2.确定要编译哪些源文件
修改顶层目录下的Makefile文件,obj-y += main.o obj-y += sub.o obj-y += a/

修改子目录下的Makefile文件

三、确定编译选项,链接选项
顶层目录下Makefile文件中CFLAGS,LDFLAGS 是编译和链接选项
我们把文件的.h文件都放在了include目录下,在编译时,指定在include文件下查找头文件
![]()
-
$(shell pwd):这是 Makefile 中的函数,用于执行 shell 命令并将输出插入到 Makefile 中。pwd命令打印当前工作目录的绝对路径。因此,$(shell pwd)会被替换为当前工作目录的路径。

指定库在哪里,用哪个库
四、使用哪个编译器
顶层目录下Makefile文件中 CROSS_COMPILE

五、确定编译 出来的文件叫什么名字


六、在子目录a下的Makefile文件中可以设置编译选项

-D 是define的意思,在编译时,会定义DEBUG,就会打印出调试信息

使用CFLAGS_sub3.o := -D DEBUG_SUB3,单独给sub3.o设置编译选项


674

被折叠的 条评论
为什么被折叠?



