我需要一个Makefile可以用来构建一个具有这种结构的项目:
多个源文件夹。输出目录中的所有对象。
对象和依赖项文件的多个相应目标文件夹。
│─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}发布于 2020-09-10 21:31:22
如果您为makefile提供了正确的源路径,它将正常工作。你给了它这个:
SOURCES = ... src/lib1/lib1_file1.c ...但是目录结构中的实际路径是:
SOURCES = ... src/lib1/src/lib1_file1.c ...https://stackoverflow.com/questions/63825613
复制相似问题