【发布时间】:2013-06-23 04:21:04
【问题描述】:
我有以下生成文件:
CC = g++
CFLAGS=-c -Wall
all: myProgram
myProgram: obj/main.o obj/Class1.o obj/Class2.o
$(CC) -o bin/myProgram obj/main.o obj/Class1.o obj/Class2.o
obj/main.o: main.cpp
$(CC) $(CFLAGS) main.cpp -o obj/main.o
obj/Class1.o: src/Class1.cpp
$(CC) $(CFLAGS) src/Class1.cpp -o obj/Class1.o
obj/Class2.o: src/Class2.cpp
$(CC) $(CFLAGS) src/Class2.cpp -o obj/Class2.o
我的想法是我有这样的文件/目录结构:
/project
Makefile
main.cpp
/src
Class1.cpp
Class2.cpp
/obj
Class1.obj
Class2.obj
/bin
myProgram
/inc
Class1.h
Class2.h
makefile 获取这些目录中的源文件和目标文件,并将它们作为myProgram 输出到/bin 中。
我知道我的 makefile 可能看起来不太理想,但无论如何。我想学习如何创建 makefile,那么您建议我将什么添加到我的 makefile 中,或者作为下一步进一步了解 makefile 以提高我的知识? (我可能正在做一个需要了解 makefile 的项目,所以我正在努力学习它们)
【问题讨论】:
-
您的问题可能会被关闭,因为它只会引起争论。将 Makefile 缩放到多个目录中的复杂项目并不是世界上最简单的事情,而且我见过很多人这样做的方法。如果可以的话,把你的团队和你自己带到 SCons。如果您需要坚持使用它们,请检查 gmake 扩展并找出更轻松地完成您想要的事情的方法。
-
另外,你的 Makefile 没有考虑到头文件的依赖。 Makefiles 不会自动执行此操作,但有一些“简单”的编译器相关的方式来执行此操作...
-
CC = g++- 不。CC = gcc。如果你想要 C++,那就是CXX。 -
CXX和CXXFLAGS用于 C++。
标签: c++