我的项目结构如下:
/
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/