【发布时间】:2015-05-20 18:10:16
【问题描述】:
我知道它已经被讨论了很多,但我有点疯狂,无法自己弄清楚。
我正在尝试学习如何创建 makefile,但在为不同文件夹中的文件定义 makefile 时遇到问题。
这是我想在编译后得到的:
/makefile
/test.exe
/src/factorials.cpp
/src/main.cpp
/src/hello.cpp
/obj/factorials.o
/obj/main.o
/obj/hello.o
/include/functions.h
这个makefile有什么问题?
C++ = g++
FILENAME = test
SOURCES_PATH = src/
SRC = $(SOURCES_PATH)factorial.cpp $(SOURCES_PATH)main.cpp $(SOURCES_PATH)hello.cpp
OBJ = factorial.o main.o hello.o
all: test.exe
test.exe: $(OBJ)
$(C++) $(OBJ) -o $(FILENAME) -Iinclude
%.o:
$(C++) -c $(SOURCES_PATH)$*.cpp -Iinclude
clean:
rm -f test.exe
一切正常,但尝试编译 src/all.cpp 时出错。此外,我不知道如何对 g++ 说将 .o 文件放入 obj/ 文件夹。
非常感谢!
【问题讨论】:
-
您可以将
obj/设置为工作文件夹,并将$(vpath)设置为src/。还取决于您的 makefile 实际所在的位置,只需编写OBJ = obj/factorial.o obj/main.o obj/hello.o并设置vpath也可能会有所帮助。