【发布时间】:2017-03-08 00:22:18
【问题描述】:
我正在尝试弄清楚如何使用 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)
【问题讨论】:
-
那些目录存在吗?还是您需要在这个 makefile 中创建它们?
-
告诉编译器将目标文件放在哪里,如
$(CC) $(CPPFLAGS) -c $(SRCPATH)main.cpp -o $(BUILDPATH)main.o。此外,SRCPATH必须由单个组件组成。