Autotools:在Makefile.am中生成源代码和头文件

时间:2011-03-18 14:28:17

标签: c++ makefile build-automation wildcard autotools

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

你知道在这里自动包含所有* .h * .cpp的标准方法吗,或者我应该编写自己的Perl脚本来生成它们。您是否已经使用了这样的脚本?

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

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

1 个答案:

答案 0 :(得分:3)

Automake不会添加此功能。它假定特定的.h或.cpp文件与特定项目相关联。该假设适用于许多常见的项目布局,并且对于任何不同的布局都会失败。

例如,我有一些项目是

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

从根目录中的一个中央makefile构建。其他时候,我在相应的本地目录中使用了四个makefile构建的相同布局。

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

加入外卡实际上会增加限制功能的风险,对于那些做'file.template.c'之类的奇怪人来说这样做会是致命的。

如果你认为它是automake的一个缺陷,那很好;然而,这是自动化所包含的缺陷之一,因为它保留了使事情变得更加灵活的努力。 Automake没有强加“你如何”做事,它提供了许多支持工具,但它确保你没有被迫采用一种“方法”来布局或构建代码。< / p>