我正在研究2.29。在父目录中没有Makefile.am,但是在所有子目录中都有Makefile.am。
在父目录中,下面是生成文件:
Makefile Makefile.def Makefile.in Makefile.tpl在侧Makefile.tpl中有一个注释,它说Makefile是由autogen Makefile.def从Makefile.tpl生成的
但是子目录中没有Makefile.def,当我运行autoreconf && automake时,它会从Makefile.am生成Makefile
Makefile.def和Makefile.am到底有什么区别?
发布于 2017-09-05 12:49:02
Makefile.def和Makefile.am到底有什么区别?
让我们来看看GCC,也在使用binutils的大型项目。引用再生GCC结构
Makefile.in文件有时很大,可以通过Makefile.am文件自动生成。一些Makefile.in文件(用于生成生成树中的Makefile )由autogen从Makefile.tpl和Makefile.def文件生成。Autogen是一个用于简化包含大量重复文本的程序的创建和维护的工具。
因此,真正的区别在于您希望如何和在何处存储autogen将要处理的部分输入文件。对于GCC,Makefile.tpl存储一个模板(用于生成输出Makefile ),而Makefile.def存储将由autogen使用的模板。
例如,在Makefile.tpl内部,您可以找到用于填充HOST_LIB_PATH变量的模板(注意,它使用了host_modules变量):
# This is the list of directories that may be needed in RPATH_ENVVAR
# so that programs built for the host machine work.
HOST_LIB_PATH = [+ FOR host_modules +][+
IF lib_path +]$(HOST_LIB_PATH_[+module+])[+ ENDIF lib_path +][+
ENDFOR host_modules +]在Makefile.def内部有一个host_modules的定义
host_modules= { module= bfd; bootstrap=true; };
host_modules= { module= opcodes; bootstrap=true; };
// ...https://stackoverflow.com/questions/46055110
复制相似问题