Kbuild - 从同一个 .c 文件构建多个 .o 文件

Kbuild - build multiple .o files from same .c file

我有两个驱动程序共享一些相同的源文件。大多数共享代码是相同的,但对于特定的驱动程序,我需要 ifdef 一些代码。我希望这些文件位于同一目录中,这样我就没有重复的源代码文件。因此,我需要能够多次构建 .o 文件,并且能够在构建它们时发送 -Dvariable

我目前尝试 myusb.ko:

obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y            += my_main_usb.o
myusb-y            += my_init.o

$(obj)/my_main_usb.o: $(src)/my_main.c
    $(CC) -DWHICH=USB $< -o $@

确实尝试从 my_main.c 构建 my_main_usb.o,但没有任何正常的 CFLAGS、包含等

如果我能让它工作,我就可以为 mysdio.ko

做类似的事情

这是正确的方法吗?

我得到了我想要的:

obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y            += my_main_xxxusb.o
myusb-y            += my_init.o

%-xxxusb.o: %.c
       $(CC) $(c_flags) -DUSB -c -o $@ $<

obj-$(CONFIG_DRIVER_SDIO) += mysd.o
mysd-y            += my_main_xxxsd.o
mysd-y            += my_init.o

%-xxxsd.o: %.c
       $(CC) $(c_flags) -DSD -c -o $@ $<