1

阅读make和gcc手册确实需要很长时间。由于我只需要它们的一些基本功能,因此我想快速学习它们。

项目目录如下。

CWD
|----Source----1.cpp
|----Header----1.h
|----Object----1.o
|----Makefile

当前工作目录中有三个目录和一个Makefile,“1.cpp”包括“1.h”。我想使用 CWD 中的 Makefile 来编译项目,使对象输出位于 Object 目录中。

这是我现在遇到的问题的简化版本。由于从头开始相对比较困难,任何人都可以帮我为这个简单的问题编写一个 Makefile 吗?我会尝试从中学习并解决我自己的问题。或者任何人都可以建议我需要学习 make 和 gcc 的哪些部分来解决这个问题。

提前致谢。

4

1 回答 1

2

这足以编译源代码并生成对象:

Object/1.o: Source/1.cpp Header/1.h
    $(CXX) -c Source/1.cpp -IHeader -o Object/1.o

如果您想构建一个可执行文件,可能称为“one”,请在其上方添加另一条规则:

one: Object/1.o
    $(CXX) Object/1.o -o one

Object/1.o: Source/1.cpp Header/1.h
    $(CXX) -c Source/1.cpp -IHeader -o Object/1.o

要稍微清理一下,请使用自动变量

one: Object/1.o
    $(CXX) $^ -o $@

Object/1.o: Source/1.cpp Header/1.h
    $(CXX) -c $< -IHeader -o $@

如果你想让第二条规则更通用,以便它可以处理更多对象,你可以将第二条规则变成一个模式规则,并分离头文件依赖1.o

one: Object/1.o
    $(CXX) $^ -o $@

Object/1.o: Header/1.h

Object/%.o: Source/%.cpp
    $(CXX) -c $< -IHeader -o $@

当然,当您准备好时,您还可以做更多事情。

于 2013-05-13T14:19:16.760 回答