如何编写多文件夹makefile
我需要一个Makefile可以用来构建具有这种结构的项目:如何编写多文件夹makefile,makefile,Makefile,我需要一个Makefile可以用来构建具有这种结构的项目: 多个源文件夹。 输出目录中的所有对象。 对象和依赖项文件的多个对应目标文件夹 │─inc └─src │ ├─lib1 │ │ ├─inc │ │ └─src │ ├─lib2 │ │ ├─inc │ │ └─src │ └─main.c │ └─output └─src ├─lib1 │ └─src │ ├─ lib1_
多个源文件夹。 输出目录中的所有对象。
对象和依赖项文件的多个对应目标文件夹
│─inc
└─src
│ ├─lib1
│ │ ├─inc
│ │ └─src
│ ├─lib2
│ │ ├─inc
│ │ └─src
│ └─main.c
│
└─output
└─src
├─lib1
│ └─src
│ ├─ lib1_file1.o
│ └─ lib1_file2.o
├─lib2
│ └─src
│ ├─ lib2_file1.o
│ └─ lib2_file2.o
└─main.o
我试过这个,但没用
LIBNAME=libhello.a
OUTDIR=output
CC = gcc
CFLAGS = -Wall -MD -O2 -c
LFLAGS =
INCS = -Iinc \
-Isrc/lib1/inc \
-Isrc/lib2/inc
SOURCES = src/main.c \
src/lib1/lib1_file1.c \
src/lib1/lib1_file2.c \
src/lib2/lib2_file1.c \
src/lib2/lib2_file2.c
OBJS=$(SOURCES:%.c=${OUTDIR}/%.o)
all: ${LIBNAME}
${LIBNAME}: ${OBJS}
ar crs ${OUTDIR}/$@ $^
.PYONY: clean
clean:
@rm -rf ${OUTDIR}
${OUTDIR}/%.o:%.c
@mkdir -p $(@D)
@${CC} ${CFLAGS} ${INCS} $< -o $@ ${LFLAGS}
LIBNAME=libhello.a
OUTDIR=输出
CC=gcc
CFLAGS=-Wall-MD-O2-c
LFLAGS=
INCS=-Iinc\
-Isrc/lib1/inc\
-Isrc/lib2/inc
SOURCES=src/main.c\
src/lib1/lib1_file1.c\
src/lib1/lib1_file2.c\
src/lib2/lib2_file1.c\
src/lib2/lib2_file2.c
OBJS=$(来源:%.c=${OUTDIR}/%.o)
全部:${LIBNAME}
${LIBNAME}:${OBJS}
ar crs${OUTDIR}/$@$^
派奥尼:干净
清洁:
@rm-rf${OUTDIR}
${OUTDIR}/%.o:%.c
@mkdir-p$(@D)
@${CC}${CFLAGS}${INCS}$<-o$@${LFLAGS}
如果您为makefile提供正确的源路径,它将正常工作。你给它这个:
SOURCES = ... src/lib1/lib1_file1.c ...
但目录结构中的实际路径是:
SOURCES = ... src/lib1/src/lib1_file1.c ...
请具体说明哪些不起作用,即预期和实际输出是什么。