我访问了许多链接,包括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.o
和b.o
编译成一个可执行文件。
提前感谢任何提示和指导!
答案 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