繁体   English   中英

使用makefile和子目录

[英]Working with makefile and subdirectories

我试图弄清楚如何使用makefile和子目录。 但是到现在为止运气还不错。 我想将所有.o文件放在“ build”子目录中,所有.cpp文件应放在“ src”文件中,而可执行文件放在“ bin”文件中。

而这个makefile是我的尝试:

PROG = prog1
BINPATH = bin/
CC = g++
CPPFLAGS = -Wall -pedantic -ansi -Iinclude
OBJS = main.o calc.o show.o
BUILDPATH = build/
SRCPATH = src/$(PROG):$(BUILDPATH)$(OBJS)
$(CC) -o $(BINPATH)$(PROG) $(BUILDPATH)$(OBJS)
$(BUILDPATH)main.o:
    $(CC) $(CPPFLAGS) -c $(SRCPATH)main.cpp
$(BUILDPATH)cacula.o:calc.h
    $(CC) $(CPPFLAGS) -c $(SRCPATH)calc.cpp
$(BUILDPATH)show.o:show.h
    $(CC) $(CPPFLAGS) -c $(SRCPATH)show.cpp
clean:
    rm -f core $(BINPATH)$(PROG) $(BUILDPATH)$(OBJS)

最紧迫的问题是您在错误地操作变量。

OBJS = main.o calc.o show.o
BUILDPATH = build/

到目前为止, $(BUILDPATH)$(OBJS)不错,但是$(BUILDPATH)$(OBJS)将扩展到build/main.o calc.o show.o ,这不是您想要的。 尝试这个:

OBJS := main.o calc.o show.o
BUILDPATH := build/
OBJS := $(addprefix $(BUILDPATH), $(OBJS))

然后,您可以像这样使用OBJS

$(PROG): $(OBJS)
    $(CC) -o $(BINPATH)$(PROG) $(OBJS)

还有其他几种方法可以改善此makefile,但这足以使它正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM