include $(sort $(wildcard package/rockchip/*/*.mk))什么意思
时间: 2023-12-24 14:05:10 浏览: 149
这是一个Makefile中的语句,包含了一些Makefile文件。
具体来说,这句语句包含了 package/rockchip/ 目录下所有子目录中的所有 `.mk` 文件。其中,`wildcard` 函数会返回符合条件的文件列表,`sort` 函数会对这个列表进行排序,最后这个列表会被 `include` 函数包含进当前 Makefile 中。
这个语句的作用通常是将一个大型项目的 Makefile 拆分成多个小的 Makefile,便于维护和管理。每个子目录中的 `.mk` 文件会定义该子目录下的一些规则和变量,这些规则和变量可以在主 Makefile 中使用。
相关问题
#生成动态库 SOURCE := $(wildcard *.c) OBJECT := $(patsubst %.c,%.o,$(wildcard *.c)) LIB := directiver.h macro.h queue.h shared.h uart.h TARGET := libsdk.so CC := gcc DIR := $(shell mkdir -p ../include) RM := rm -rf all:$(TARGET) cptarget cphead $(TARGET):$(OBJECT) $(CC) $(SOURCE) $(LIB) -c -fPIC -I./include $(CC) -shared $(OBJECT) -o $@ -lpthread cptarget: cp $(TARGET) /lib cphead: $(DIR) cp $(LIB) ../include *.o:*.c $(CC) $^ -c $@ .PHONY:clean cplib cphead clean: $(RM) *.so *.o *.gch $(RM) ../include
这段makefile文件是生成动态库的示例代码,它包含了以下几个步骤:
1. 定义了源文件和目标文件的变量;
2. 定义了动态库的名称和编译器;
3. 定义了生成头文件的目录;
4. 定义了清理目标、头文件和中间文件的命令;
5. 定义了生成动态库的命令;
6. 定义了拷贝动态库和头文件的命令;
7. 定义了编译源文件的命令。
具体地,这段makefile文件的执行流程如下:
1. 执行all目标,生成动态库和拷贝头文件;
2. 执行生成动态库的命令,分别编译源文件和链接生成动态库;
3. 执行拷贝动态库的命令,将动态库拷贝到/lib目录下;
4. 执行拷贝头文件的命令,将头文件拷贝到../include目录下;
5. 执行clean目标,清理生成的动态库、中间文件和头文件目录。
需要注意的是,这段makefile文件中使用了一些makefile的高级特性,比如wildcard、patsubst、shell等,需要对makefile有一定的了解才能看懂。同时,这段makefile文件的具体实现也与项目的结构和需求有关,需要根据实际情况进行修改。
CUR_SOURCE=${wildcard *.c} CUR_OBJS=${patsubst %.c, %.o, $(CUR_SOURCE)} $(warning $(CUR_SOURCE)) all:$(SUBDIRS) $(CUR_OBJS) DEBUG $(SUBDIRS):ECHO make -C $@ DEBUG:ECHO $(AR) crv libbsp.a $(ROOT_DIR)/$(OBJS_DIR)/*.o cp $(ROOT_DIR)/libbsp.a $(ROOT_DIR)/$(BIN_DIR)/ cp $(ROOT_DIR)/libbsp.a ../workspace/obj/ ECHO: @echo $(SUBDIRS)
这是一个 Makefile 中的语句,用于编译链接当前目录下的所有 .c 文件,并生成静态库文件 libbsp.a。具体来说,这个语句中定义了一个 all 目标,用于编译链接当前目录下的所有 .c 文件,并生成静态库文件 libbsp.a。其中,CUR_SOURCE 和 CUR_OBJS 变量分别用于获取当前目录下的所有 .c 文件和转换为对应的 .o 文件;$(SUBDIRS) 变量用于指定需要编译链接的子目录;DEBUG 目标用于生成静态库文件 libbsp.a,并将其复制到指定目录中。在这个语句中,使用了 Makefile 中的一些函数和变量,包括 $(SUBDIRS)、$(AR)、$(ROOT_DIR)、$(OBJS_DIR) 和 $(BIN_DIR) 等。其中,$(SUBDIRS) 变量可以指定需要编译链接的子目录;$(AR) 变量用于指定静态库生成工具的名称;$(ROOT_DIR)、$(OBJS_DIR) 和 $(BIN_DIR) 变量用于指定根目录、目标文件存放目录和可执行文件存放目录。这个语句的作用是编译链接当前目录下的所有 .c 文件,并生成静态库文件 libbsp.a。通过这个静态库文件,可以方便地在其他程序中引用当前目录下的函数库。
阅读全文