考虑以下简单的 Makefile。请注意,有两个类,每个类都有对应的 .h 和 .cpp 文件。
output: main.o class1.o class2.o
g++ main.o class1.o class2.o -o output
main.o: main.cpp
g++ -c main.cpp
class1.o: class1.cpp class1.h
g++ -c class1.cpp
class2.o: class2.cpp class2.h
g++ -c class2.cpp
clean:
rm *.o output
这个 Makefile 是否可靠?我怎样才能让它更健壮?有人可以提供此 Makefile 的更强大版本吗?它将在 64 位 Red Hat Linux 或 CentOS 机器上运行。
如果重要,我正在使用:
-gcc --version 4.8.4(来自 GNU 编译器集合)
-GDB版本:GNU gdb (Ubuntu 7.7.1 -0ubuntu5~14.04.2) 7.7.1
最佳答案
我不认为您的原始 makefile 离题很远。我刚刚做了一些补充:
- 添加了一个默认的
all
目标 - 最好是明确的 - 在对 g++ 的所有调用中使用
CXXFLAGS
环境变量 - 使
main.o
依赖于class1.h
和class2.h
,如讨论的那样 - 指定
clean
是一个PHONY
目标,以便在您添加名为clean
的构建工件时安全起见
ALL := output
all : $(ALL)
output: main.o class1.o class2.o
g++ $(CXXFLAGS) main.o class1.o class2.o -o output
main.o: main.cpp class1.h class2.h
g++ $(CXXFLAGS) -c main.cpp
class1.o: class1.cpp class1.h
g++ $(CXXFLAGS) -c class1.cpp
class2.o: class2.cpp class2.h
g++ $(CXXFLAGS) -c class2.cpp
.PHONY : clean
clean:
rm *.o output
关于c++ - 为 C++ 程序创建一个健壮的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142441/