首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写多文件夹makefile

如何编写多文件夹makefile
EN

Stack Overflow用户
提问于 2020-09-10 16:20:22
回答 1查看 16关注 0票数 0

我需要一个Makefile可以用来构建一个具有这种结构的项目:

多个源文件夹。输出目录中的所有对象。

对象和依赖项文件的多个相应目标文件夹。

代码语言:javascript
复制
│─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

我试过这个,但没试过。

代码语言:javascript
复制
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}
EN

回答 1

Stack Overflow用户

发布于 2020-09-10 21:31:22

如果您为makefile提供了正确的源路径,它将正常工作。你给了它这个:

代码语言:javascript
复制
SOURCES = ... src/lib1/lib1_file1.c ...

但是目录结构中的实际路径是:

代码语言:javascript
复制
SOURCES = ... src/lib1/src/lib1_file1.c ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63825613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档