https://stackoverflow.com/questions/4219255/how-do-you-get-the-list-of-targets-in-a-makefile 方法1: make [space] [tab] [tab] 方法2: .PHONY: listlist:@LC_ALL=C$(MAKE)-pRrq -f$(firstword$(MAKEFILE_LIST)): 2>/dev/null | awk -v RS= -F: '/(^|\n)# Files(\n|$$)/,/(...
要对子目录执行make,需要在当前目录制作一个Makefile,遍历所有子目录的Makefile,并运行相应的make target. # # Referencehttp://www.gnu.org/software/make/manual/make.html # #需要排除的目录 exclude_dirs := include bin #取得当前子目录深度为1的所有目录名称 dirs := $(shell find . -maxdepth 1 -ty...
3、顶层目录的Makefile.build: 这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来,打包为built-in.o; PHONY := __build #假目标 __build: obj-y := subdir-y := include Makefile #包含当前目录的makefile,才知道目标是哪些目标和目录 # obj-y := a.o...
在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。 比如命令 includefile.dep 1. 即把file.dep文件在当前Makefile文件中展开,亦即把file.dep文件的内容包含进当前Makefile文件 在include前面可以有一些空字符,但是绝不能是[Tab]键开始。
"EXTRA_CFLAGS",它给当前目录下的所有文件(不含其下的子目录)设置额外的编译选项,可以不设置"CFLAGS_xxx.o",它给当前目录下的xxx.c设置它自己的编译选项,可以不设置 首先查看 sub2.c 源码 代码语言:javascript 复制 #include<stdio.h>#includevoidsub2_fun(void){printf("Sub2 fun, B = %d!\n",B);#...
要对子目录执行make,需要在当前目录制作一个Makefile,遍历所有子目录的Makefile,并运行相应的make target. # # Referencehttp://www./software/make/manual/make.html # #需要排除的目录 exclude_dirs := include bin #取得当前子目录深度为1的所有目录名称 ...
这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来,打包为built-in.o # 伪目标PHONY:=__build__build:# 清空需要的变量obj-y:=subdir-y:=EXTRA_CFLAGS:=# 包含同级目录Makefile# 这里要注意,相对路径为 执行本 Makefile.build 的路径includeMakefile# 获取当前...
addsuffix 会将 /*.o追加到$(Modules)中所有的词语后面,也就是我们之前在子目录下编译生成的所有的.o文件 $(Libs) :替换为-lpthread,即所需要的动态库 暂时没研究call的用法,所以自己写了自己的初学版本: include script/Makefile .PHONY : all mm clean all: $(Target) mm: @ for i in $(SUBDIRS); ...
.../lib -lworld 上面这句表示在编译hello.c时-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录, ...目录作为第一个寻找库文件的目录, 寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib -lworld表示在上面的lib...附:我的makefile: ### #makef...
第三行include ../inc.mk包含了上一级目录的inc.mk(对,没有错,我们一般的include的Makefile习惯以.mk命名),为什么要include这个文件呢,这是因为C_FLAGS还有其它的变量都是定义在inc.mk里,而这些变量对于其它的包(比如groupsock、UsageEnvironment和BasicUsageEnvironment)也是需要的,避免重复定义,我们在inc.mk统一定义...