更改包含的makefile中的文件路径

有里

我有项目,几个子项目

一些子项目非常独立。他们在工作时对整个项目一无所知,它们的构建方式各不相同,并且各有千秋MakefileMakefile位于子项目的根目录中。整个子项目都构建到单个目标文件中。

有什么办法可以将这样的目标文件适当地包含到main中Makefile吗?“适当”是指保留所有依赖项,并使用subproject中的方法构建此文件Makefile

我试图创建用于构建此目标文件的规则:

path_to_subproject/some_object.o:
    $(MAKE) -C path_to_subproject

但是那样我就不能保留任何依赖关系。

我需要的是转换子项目中的所有相对路径,Makefile并将其包括到main中Makefile

另一种方法可以告诉主要Makefilesome_object.o使用不同的内置Makefile,所以make应该用它来检查的依赖等。

贝塔

假设其中的makefilesubproject/如下所示:

some_object.o: some_source.cc some_header.h
    $(CXX) -c $< -o $@ -I.

您可以这样修改它:

HERE:=/full/path/to/subproject

$(HERE)/some_object.o: $(HERE)/some_source.cc $(HERE)/some_header.h
    $(CXX) -c $< -o $@ -I$(HERE)

单独使用时,它的作用与原始方法相同(除了您不能再make some_object.o从上使用subproject/,必须make /full/path/to/subproject/some_object.o-可以固定,但是必须做出一两个设计决定)。

现在,您可以在主makefile的底部添加一行:

include path_to_subproject/Makefile

然后主makefile可以使用该对象:

some_executable: local_object.o /full/path/to/subproject/some_object.o
    whatever

完成这项工作后,可能会有更复杂的变化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章