簡體   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