gpt4 book ai didi

c++ - 如何重写我的 makefile 以便重构我的项目目录?

转载 作者:行者123 更新时间:2023-12-02 16:20:55 25 4
gpt4 key购买 nike

我一直在开发一个完全用 C++ 编写的小游戏,使用 SDL 处理图形和音频。到目前为止,我所有的源文件和 header 都位于与我的可执行文件相同的目录中,但我想将它们移动到 ./src 和 ./include 文件夹中。

但是,我真的很难理解 makefile 语法以及如何告诉编译器在哪里可以找到源文件和头文件。

我如何告诉 makefile 在子目录中查找源代码/标题/对象?我的 makefile 有什么改进/错误吗?

这是我当前的 makefile:

OBJS = main.o Window.o Entity.o Player.o Tile.o BoundingBox.o\
MapReader.o Button.o Zombie.o Projectile.o Pathfinder.o
CPP = g++
CPPFLAGS = -c -g
LDFLAGS = -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer -mwindows

ZombieAttack: $(OBJS)
$(CPP) -o ZombieAttack $(OBJS) $(LDFLAGS)

main.o: main.cpp
$(CPP) $(CPPFLAGS) main.cpp

Window.o: Window.cpp
$(CPP) $(CPPFLAGS) Window.cpp

Entity.o: Entity.cpp
$(CPP) $(CPPFLAGS) Entity.cpp

Player.o: Player.cpp
$(CPP) $(CPPFLAGS) Player.cpp

Tile.o: Tile.cpp
$(CPP) $(CPPFLAGS) Tile.cpp

BoundingBox.o: BoundingBox.cpp
$(CPP) $(CPPFLAGS) BoundingBox.cpp

MapReader.o: MapReader.cpp
$(CPP) $(CPPFLAGS) MapReader.cpp

Button.o: Button.cpp
$(CPP) $(CPPFLAGS) Button.cpp

Zombie.o: Zombie.cpp
$(CPP) $(CPPFLAGS) Zombie.cpp

Projectile.o: Projectile.cpp
$(CPP) $(CPPFLAGS) Projectile.cpp

Pathfinder.o: Pathfinder.cpp
$(CPP) $(CPPFLAGS) Pathfinder.cpp

clean:
del *.o

我正在使用 mingw 进行编译和 mingw32-make

最佳答案

如果您希望二进制文件位于最高级别的目录中,而 .h/.cpp 文件位于该目录的子目录中,您只需在要访问的文件前加上目标目录/文件名即可

例如:

MapReader.o: MapReader.cpp
$(CPP) $(CPPFLAGS) MapReader.cpp

成为

MapReader.o: src/MapReader.cpp
$(CPP) $(CPPFLAGS) src/MapReader.cpp

关于c++ - 如何重写我的 makefile 以便重构我的项目目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65534100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com