2011-03-18 43 views
0

This link提到通配符是一种自动列出Makefile.am文件中的SOURCES和HEADERS的方法。它还提到有些人编写外部脚本来生成这些文件。Autotools:在Makefile.am中生成源文件和头文件

你知道在这里自动包含所有* .h * .cpp的标准方式,还是应该编写自己的Perl脚本来生成它们?你有没有这样的脚本,你使用?

PS:我根据目录下面的纯逻辑的分离组织的源文件在我的项目:

src/dog/woof.h 
src/dog/woof.cpp 
src/cow/moo.h 
src/cow/moo.cpp 

回答

3

Automake会不会增加这个功能。它假定特定的.h或.cpp文件与特定项目相关联。这种假设适用于许多常见的项目布局,并且不符合任何不同的布局。

例如,我已经是被布置为

src/module/code 
src/app/code 
src/library/code 
include/headers 

从根一个中央makefile建立的项目。其他时候,我已经从相应的本地目录中的四个makefile创建了相同的布局。

项目中存在很多可变性。有些将公共头文件与私有头文件混合在代码目录中,有些将它们分开。一些构建共享对象库,有些则不。某些不支持在不兼容的平台上编译的发货代码。

放入一个通配符包含实际上会造成限制功能的巨大风险,对于那些执行像'file.template.c'这样的事情的奇怪人来说,这将是致命的。

如果你认为它是automake的缺陷,那很好;然而,这是automake拥抱的缺陷之一,因为它被保留下来以使事情更加灵活。 Automake并没有强加你做什么的“如何”,它提供了很多启用工具,但它确实没有被迫成为布局或构建代码的一种“方法”。