【发布时间】:2020-09-10 13:31:53
【问题描述】:
下面的sn-p:
... rest of makefile ...
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usb_bsp.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usb_core.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usb_dcd.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_cdc_core.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_cdc_vcp.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usb_dcd_int.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_core.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_desc.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_ioreq.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_req.c
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/usbd_usr.c
... rest of makefile
编译,但如果我将其替换为:
SRCS += $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/$(wildcard *.c)
make 命令返回链接器错误:
FingerCell/Source/STM32F4-DISCOVERY_USB/User.o: No such file or directory
STM32F4-DISCOVERY_USB 目录不包含除第一个代码 sn-p 中列出的文件之外的其他 .c 文件。 我是否在这里错误地使用了通配符?
【问题讨论】:
-
看来你需要包含目标文件。您可以咨询make man page。
-
通配符在你告诉它的地方。您告诉它:(1) 查找所有名为 *.c 的文件,(2) 将
$(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/放在该文本前面 -
建议:
SRCS := $(wildcard $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/*.c)然后您可以通过:OBJ := $(SRCS:.c=.o)和DEP := $(SRCS:.c=.d)获取对象和依赖项名称 -
这里有一个提示:在 shell 提示符下运行
ls <wildcard-expression>。如果返回你想要的,那么在你的makefile中写$(wildcard <wildcard-expression>)