如何解决如何编写多个文件夹的makefile
我需要一个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}
解决方法
您的Makefile如果提供正确的源路径,将可以正常工作。您给了它:
SOURCES = ... src/lib1/lib1_file1.c ...
但是您目录结构中的实际路径是:
SOURCES = ... src/lib1/src/lib1_file1.c ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。