在创建一个非递归make系统时似乎只有少数资源,而在我找到的那些资源中,我都不知道如何处理我的用例。我的层次结构是这样的:正确的方式做非递归使?
project/
project/libA/...
project/libB/...
...
project/appA/...
project/appB/...
所以也许project/appA/makefile
取决于libA
和libB
和project/appB/makefile
取决于libA
,libC
和libF
什么的。我希望能够在每个目录中都能够使用make
并完成这项工作。我已经有了一个递归解决方案。
所有的资源总是定义一个根project/makefile
include
上面的所有目录。但我需要倒退。有没有这样的例子?我想,最好我想定库生成文件看起来像:
include ../../rules.mk
SRC := $(wildcard src/*.cpp)
INCDIR := ./include
$(add_build_target)
...其中基础rules.mk将定义add_build_target
为给定SRC
和INCDIR
正确的规则追加到build
。这是正确的方法吗?我怎样才能真正写出add_build_target
来添加正确的目标(.o的所有.cxx的) - 我试过的所有东西都给了我“没有规则来制定任何目标的问题”,尽管我认为我已经定义了它们....
+1 - 尝试CMake,它非常易于使用! – St0fF 2014-09-26 22:46:41
@OliverCharlesworth你如何处理自动书写工具的特殊情况?通过手写Makefiles,这非常简单:只需在文件末尾添加特殊案例的名称和源代码,然后粘贴shell命令,在此之后生成特殊案例。与您在终端中实际输入的距离很小。 – 2014-09-26 22:52:06
@MichaelGrünewald:我用CMake等做了很长的一段时间,所以我不能告诉你;)我对Make有点冒犯的是,40年过去了,每个人都必须重新创建基础设施(在一个怪诞的语法)每次。 – 2014-09-26 22:59:37