makefile:在子目录中搜索文件

makefile:在子目录中搜索文件,makefile,Makefile,所以我有一个GCC命令,我想使用一个简单的makefile。以前从未使用过makefile,参考教程后仍然存在问题 所以终端上的命令是 link4@link4-VirtualBox:~/link4/G2/G2 module/src$ gcc -I.src/L4COMM -I.src/L4SERIAL -I.src/L4SYSTEM -I.src/main.c -I.src/L4COMM/l4comm.c -I.src/L4SERIAL/l4serial.c ./src/bypass.c ./sr

所以我有一个GCC命令,我想使用一个简单的makefile。以前从未使用过makefile,参考教程后仍然存在问题

所以终端上的命令是

link4@link4-VirtualBox:~/link4/G2/G2 module/src$ gcc -I.src/L4COMM -I.src/L4SERIAL -I.src/L4SYSTEM -I.src/main.c -I.src/L4COMM/l4comm.c -I.src/L4SERIAL/l4serial.c ./src/bypass.c ./src/input.c
这很好,但是当我创建一个makefile时,我无法让它搜索文件'l4comm.c和l4serial.c',它们分别位于src/l4comm和src/l4serial中

这就是我的makefile的外观:

CC =gcc
INCLUDE = -I/src/L4COMM \
          -I/src/L4SERIAL
VPATH = -I/src/L4COMM \
        -I/src/L4SERIAL

cfiles := $(patsubst %.c, %.o, $(wildcard *.c))
hfiles := $(patsubst %.h, %.o, $(wildcard *.h))

g2make: $(cfiles)
        $(CC) $(INCLUDE) -o main.c l4comm.c l4serial.c bypass.c input.c
  • 希望makefile在子目录中查找文件
  • 正如我使用'cfiles/hfiles'检查更改一样,我希望使用通配符也检查子目录中的文件

  • 感谢您的帮助!:)

    您可以使用此g2make:

     $(CC) $(INCLUDE) -o .src/main.c ./src/L4COMM/l4comm.c ./src/L4SERIAL/l4serial.c ./src/bypass.c ./src/input.c
    

    您可以使用此g2make:

     $(CC) $(INCLUDE) -o .src/main.c ./src/L4COMM/l4comm.c ./src/L4SERIAL/l4serial.c ./src/bypass.c ./src/input.c
    

    如果只有两个文件要查找,并且您知道它们在哪里,您真的需要进行全面搜索吗?请尝试在生成中自动将树中的所有源文件包括在内???啊!!!。在制作上要明确。(虽然您可以使用
    cfiles:=$(shell find.-type f-name'*.c')
    执行您要求的操作)如果只有两个文件要查找,并且您知道它们在哪里,您真的需要进行全功能搜索吗?请尝试
    VPATH=./src/L4COMM./src/L4SERIAL
    自动将树中的任何源文件包含在生成中???啊!!!。在制作上要明确。(尽管您可以使用
    cfiles:=$(shell find.-type f-name'*.c')
    执行您的要求)