我有项目,几个子项目
一些子项目非常独立。他们在工作时对整个项目一无所知,它们的构建方式各不相同,并且各有千秋Makefile
。这Makefile
位于子项目的根目录中。整个子项目都构建到单个目标文件中。
有什么办法可以将这样的目标文件适当地包含到main中Makefile
吗?“适当”是指保留所有依赖项,并使用subproject中的方法构建此文件Makefile
。
我试图创建用于构建此目标文件的规则:
path_to_subproject/some_object.o:
$(MAKE) -C path_to_subproject
但是那样我就不能保留任何依赖关系。
我需要的是转换子项目中的所有相对路径,Makefile
并将其包括到main中Makefile
。
另一种方法可以告诉主要Makefile
是some_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] 删除。
我来说两句