非递归makefile示例

时间:2013-07-23 04:43:34

标签: makefile

我访问了许多链接,包括Peter Miller关于非递归make的PDF,但我仍然找不到一个关于如何实现它的简单示例。

我用谷歌搜索了几个小时,但其中许多似乎过于复杂,难以分辨出事情的流动。

有人可以展示一些目录的例子吗?我想看看makefile如何在添加更多目录时进行扩展。

可能是这样的:

/src/
|->main.cc

|->dirA/a.cc
|->dirA/module.mk

|->dirB/b.cc
|->dirB/module.mk

/include/
|->main.h
|->a.h
|->b.h

然后将main.o要求a.ob.o编译成一个可执行文件。

提前感谢任何提示和指导!

2 个答案:

答案 0 :(得分:2)

你没有多说你想要这个系统做什么。这是一个粗略但有效的解决方案:

<强> / SRC /生成文件:

vpath %.h include

main: main.o
    $(CXX) $^ -o $@

%.o: %.cc
    $(CXX) -c -Iinclude $< -o $@     # not the best way, but maybe the clearest

include dirA/module.mk
include dirB/module.mk

<强> /src/dirA/module.mk:

main: dirA/a.o

dirA/a.o: a.h

<强> /src/dirB/module.mk:

main: dirB/b.o

dirB/b.o: b.h

一旦你有这么多工作,你可以做更多的事情。

答案 1 :(得分:0)

以下是示例: https://github.com/igagis/prorab/tree/master/tests

主makefile包含子目录中的所有makefile。

以下是教程:https://github.com/igagis/prorab/blob/master/wiki/TutorialBasicConcepts.md