【发布时间】:2017-04-05 08:07:42
【问题描述】:
我读过其他类似问题的问题,唉,我仍然很困惑。
这是我当前的 Makefile:
CC = g++
EXEFILE = template
IFLAGS= -I/usr/include/freetype2 -I../Camera
LFLAGS= -L/usr/lib/nvidia-375 -L/usr/local/lib -L/usr/include/GL -L/usr/local/include/freetype2 -L/usr/local/lib/
LIBS = -lglfw -lGL -lGLU -lOpenGL -lGLEW -pthread -lfreetype
SRC=*.cpp
DEPS=*.h
$(EXEFILE):
$(CC) -std=c++11 -o $(EXEFILE) -Wall -Wno-comment $(SRC) $(IFLAGS) $(LFLAGS) $(LIBS)
all: run clean
run: $(EXEFILE)
./$(EXEFILE)
clean:
rm $(EXEFILE)
现在我所有的 .h 文件和 .cpp 文件都在工作目录中,一切都可以编译和运行。我的问题是我已经有大量文件,而且变得非常混乱。我想创建多个目录(甚至可能是这些目录中的目录)来组织我的文件。但是,一旦我将头文件及其对应的 cpp 文件移动到当前目录内的目录中,编译器就不再知道如何链接它们。
如何告诉我的 make 文件编译和链接当前根目录下的所有内容?
或者,是否有关于 makefile 语法的 ELI5 指南?
【问题讨论】:
-
如果您将
$(EXEFILE):替换为$(EXEFILE): $(SRC),您会发现您的构建过程会更好 - 无需删除可执行文件即可重新构建它。虽然你真的想要$(OBJ)在最后阶段因为你不想每次都重新编译每个源文件。 -
为了更容易编译 - 查看 Cmake。