我的项目结构如下:

/
subdir1
subdir2
subdir3
common_include

每个子目录为我的项目编译不同的二进制文件和库。
common_include包括我的所有子目录都包含的.h(C++头)。

这些头文件不会添加到SOURCES属性中的每个Makefile.am中。
但是我将以下路径-I ../ common_include添加到CPPFLAGS属性

我使用GNU构建系统进行配置。一切正常。

但是,当我想通过键入以下命令来释放项目时:make distcheck以创建:my-project-1.0.tar.gz,则成功创建了归档文件。

但是它包含所有子目录,而不包含common_include目录。因此最终用户无法编译。

有什么帮助吗?

谢谢

最佳答案

听起来您具有Makefile.am文件的层次结构,每个目录中都有一个。解决此问题的一个简单方法是在整个项目的顶层编辑Makefile.am并将其添加到其中:

EXTRA_DIST = common_include/header.h common_include/other-header.h # ...

依此类推,列出所有 header 。 Automake使用EXTRA_DIST来命名应包含在发行版中的其他文件,即使Automake知道的任何其他规则都没有引用它们,它也是解决此类问题的良好通用机制。

关于gnu - 进行distcheck不会复制所有源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14964811/

10-16 19:17
查看更多