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
最佳答案
Automake 不会添加此功能。它假设特定的 .h 或 .cpp 文件与特定的项目相关联。该假设适用于许多常见的项目布局,但不适用于任何不同的布局。
例如,我的项目布局为
src/module/code
src/app/code
src/library/code
include/headers
从根目录中的一个中央 makefile 构建。其他时候,我在适当的本地目录中从四个 makefile 构建了相同的布局。
项目中存在很多可变性。有些将公共(public)头文件与代码目录中的私有(private)头文件混合在一起,有些则将它们分开。有些构建共享对象库,有些则不构建。有些发布的代码不应在不兼容的平台上编译。
加入通配符实际上会带来限制功能的巨大风险,对于那些做“file.template.c”之类的奇怪的人来说,这将是致命的。
如果您认为这是 automake 的缺陷,那很好;然而,这是 automake 所接受的缺陷之一,因为它在努力使事情变得更加灵活的过程中得以保留。 Automake 不会强加你做事的“方式”,它提供了很多启用工具,但它竭尽全力确保你不会被迫采用一种“方法”来布局或构建你的代码。
关于c++ - Autotools:在 Makefile.am 中生成源代码和 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353401/