Makefile单独的目录

时间:2013-05-13 08:33:34

标签: makefile

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

项目目录如下所示。

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分: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

要清理一点,请使用automatic variables

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

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

如果你想让第二条规则更通用,以便它可以处理更多对象,你可以将第二条规则转换为pattern rule并分隔1.o的标题依赖:

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

Object/1.o: Header/1.h

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

当你做好准备时,当然还有更多你可以做的事。