【发布时间】:2016-06-11 08:28:14
【问题描述】:
我有以下目录结构:
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
但这很痛苦,因为有很多子目录,子目录中还有更多子目录(我们正在分发我们自己的标头需要的第 3 方代码)。我想要做的是要么告诉 automake 只将 /inc 中的目录复制到 $(includepath) 以及它遇到的每个子目录,要么告诉它只从头文件中删除部分路径正在上市。这可能吗?
【问题讨论】:
标签: recursion makefile header autotools automake