我有以下目录结构:
Makefile.am
src/
mymod/
mod.cc
submod/
submod.cc
inc/
Makefile.am
mymod/
mod.hh
submod/
submod.hh
使用自动工具,我想分发由src
制作的库和inc
中的标题。顶级Makefile.am
看起来像
lib_LTLIBRARIES = mylib.la
mylib_la_SOURCES=./mymod/mod.cc\
./mymod/submod/submod.cc
SUBDIRS=inc
然后inc/Makefile.am
有
mymod_includedir=$(includedir)
nobase_mymod_include_HEADERS=mymod/mod.hh\
mymod/submod/submod.hh
这很好用。我最终得到了什么库的东西,我的标题得到了适当的安装。但是,我想消除Makefile中涉及的递归。问题是,如果我将inc/Makefile.am
中的行移动到根目录,那么我必须按如下方式更新路径:
mymod_includedir=$(includedir)
nobase_mymod_include_HEADERS=inc/mymod/mod.hh\
inc/mymod/submod/submod.hh
这会导致我的标题被转储为$PREFIX/include/inc/mymod/mod.hh
而不是我想要的$PREFIX/include/mymod/mod.hh
。我知道我
可以做类似
mymodincludedir=$(includedir)/mymod
mymod_HEADERS=inc/mymod/mod.hh
mysubmodincludedir=$(includedir)/mymod/submod
mysubmod_HEADERS=inc/mymod/submod/submod.hh
但这非常痛苦,因为子目录中有很多,子目录中有更多子目录(我们正在分发第三方的代码我们自己的标题需要)。我希望能够做到的是告诉automake只将/inc
中的目录与它遇到的每个子目录一起复制到$(includepath)
,或者告诉automake只删除部分内容我列出的头文件中的路径。这可能吗?