<分区>
我有这样一个项目的文件结构:
Project Folder
|
->source
|
-->main.cpp
-->frac.hpp
-->frac.cpp
-> obj
|Empty for now, but will store the .o files
这是我的生成文件:
CC = g++
CFLAGS = --std=c++11 -Wall
LFLAGS = --std=c++11
SRC = source
OBJ = obj
all: frac
frac: $(OBJ)/main.o $(OBJ)/frac.o
g++ $(LFLAGS) -o frac $(OBJ)/main.o $(OBJ)/frac.o
$(OBJ)/main.o: $(SRC)/main.cpp $(SRC)/frac.hpp
g++ $(CFLAGS) -c $(SRC)/main.cpp
$(OBJ)/frac.o: $(SRC)/frac.cpp $(SRC)/frac.hpp
g++ $(CFLAGS) -c $(SRC)/frac.cpp
现在,当我运行命令 make frac
我收到这些错误:
g++ --std=c++11 -o frac obj/main.o obj/frac.o
g++: error: obj/main.o: No such file or directory
g++: error: obj/frac.o: No such file or directory
g++: fatal error: no input files
compilation terminated.
make: *** [frac] Error 4
现在对我来说奇怪的是,在这些错误之后,它仍然在当前目录中生成 main.o 和 frac.o。然后我必须执行 mv *.o obj 将它们全部移动到 obj 目录中。然后我可以运行 make frac,这次它可以运行并生成可执行文件。我知道 make 正在尝试使用不存在的链接文件,那么如何在第一次运行命令时生成它们?
谢谢!
编辑:我看过这个帖子 How to place object files in separate subdirectory 但我不清楚如何实现该解决方案。我不能直接将它复制粘贴到我的 makefile 中,而且他的结构与我的不同