c++ - Autotools:在 Makefile.am 中生成源代码和 header

标签 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

最佳答案

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/

相关文章:

java - 使用 java、eclipse 和 ant 自动复制构建的文件和库

c++ - 两个 vector 的集合交集的高效或快速大小

c++ - 复杂的寻路算法

c++ - 这对于仅 header 库来说代码太多了吗?

c++ - 整数常量到 const char* 的静态转换

c - Dovecot 插件 deleted_to_trash 缺少 lib.h,make 失败

c - 包含头文件(如果存在)以在 C 中重新定义宏

c++ - 如何在 BuildServer 上构建 VS2010 C++ 项目

c++ - "Recursive Makefile Considered Harmful"样式 makefile 问题

iphone - 我可以强制要求设备或模拟器始终用于构建特定目标吗?