QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7554|回复: 0

奇怪的Makefile现象

[复制链接]
发表于 2014-11-13 13:01:54 | 显示全部楼层 |阅读模式
为了测试多文件连接成一个模式,写了个HelloWorld的模块,分成两个文件存放在同一目录,一个main.c,一个other.c
然后写一个Makefile,下面这样写是可以编译的(make前面实际是Tab,这里输入不了,用空格代替):
.PHONY += all
TARGET := helloworld
obj-m += $(TARGET).o
$(TARGET)-objs := main.o other.o

all:
     make -C /lib/modules/`uname -r`/build M=$(shell pwd) modules

但下面这样写就不行了(make前面实际是Tab,这里输入不了,用空格代替):
.PHONY += all
TARGET := helloworld
obj-m += $(TARGET).o

BLD := $(patsubst %.c,%.o,$(wildcard *.c))
$(TARGET)-objs := $(BLD)

all:
     @echo "$(TARGET)-objs = $($(TARGET)-objs)"
     make -C /lib/modules/`uname -r`/build M=$(shell pwd) modules

make前面那句打印出来的内容是:helloworld-objs := main.o other.o
make语句编译错误说是找不到helloworld.c

难道$(TARGET)-objs的内容就不能用自动生成的?那再添加一个.c文件不就又要改makefile了么?makefile不可能这么死板吧?求解释!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-25 12:20 , Processed in 0.056178 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表