我正在使用autotools安装多个doc目录,但是,它正在为相关目录添加一个不需要的前缀:
我跑
autoreconf -f;automake; ./configure; make; sudo make install
错误:
test -z "/usr/local/share/opendiameter/docs" || /bin/mkdir -p "/usr/local/share/opendiameter/docs"
/usr/bin/install -c -m 644 docs/msvc-solution-usage.txt docs/development_policy.txt docs/coding_style.txt docs/bugtracking-diagram.pdf ./docs/framework/ ./docs/libdiameter ./docs/libdiametereap ./docs/libdiameternasreq ./docs/libdiametermip4 ./docs/libeap ./docs/libpana ./docs/nasreq opendiameter.kdevelop tools/getopt.patch tools/getopt1.patch autogen.sh RELEASE README '/usr/local/share/opendiameter/docs'
/usr/bin/install: omitting directory `./docs/framework/'
/usr/bin/install: omitting directory `./docs/libdiameter'
/usr/bin/install: omitting directory `./docs/libdiametereap'
/usr/bin/install: omitting directory `./docs/libdiameternasreq'
/usr/bin/install: omitting directory `./docs/libdiametermip4'
/usr/bin/install: omitting directory `./docs/libeap'
/usr/bin/install: omitting directory `./docs/libpana'
/usr/bin/install: omitting directory `./docs/nasreq'
</code>
以下是Makefile.am
- 请注意,我已尝试$(top_srcdir)
作为docs/
docdir = $(prefix)/share/opendiameter/docs
doc_DATA = docs/msvc-solution-usage.txt \
docs/development_policy.txt \
docs/coding_style.txt \
docs/bugtracking-diagram.pdf \
docs/framework/ \
docs/libdiameter \
docs/libdiametereap \
docs/libdiameternasreq \
docs/libdiametermip4 \
docs/libeap \
docs/libpana \
docs/nasreq \
opendiameter.kdevelop \
tools/getopt.patch \
tools/getopt1.patch \
autogen.sh \
RELEASE \
README
SUBDIRS_LIBS = libodutl \
libdiamparser \
libdiameter \
libdiametermip4 \
libeap \
libpana \
libdiametereap \
libdiameternasreq
SUBDIRS_APPS = applications
SUBDIRS_DOCS = docs
SUBDIRS = $(SUBDIRS_LIBS) $(SUBDIRS_APPS)
DIST_SUBDIRS = $(SUBDIRS_LIBS) $(SUBDIRS_APPS) $(SUBDIRS_DOCS)
includedir = $(prefix)/include/opendiameter
include_HEADERS = $(top_srcdir)/include/framework.h \
$(top_srcdir)/include/aaa_parser_api.h \
$(top_srcdir)/include/aaa_global_config.h \
$(top_srcdir)/include/aaa_dictionary_api.h \
$(top_srcdir)/include/aaa_parser_defs.h \
$(top_srcdir)/include/resultcodes.h
dist-hook:
rm -rf `find $(distdir) -name CVS`
答案 0 :(得分:3)
您假设_DATA
知道如何处理目录。它不是。它处理文件。
我假设您希望目录结构保留在安装中。
为了布局目录结构,您需要为每个目录执行以下操作:
docdir = $(datadir)/opendiameter/docs
docframeworkdir = $(docdir)/framework
dist_doc_DATA = docs/msvc-solution-usage.txt \
...
dist_docframework_DATA = \
docs/framework/foo \
docs/framework/bar
基本上,您需要创建目标安装目录(如docframeworkdir
)
并列出其中的文件(如dist_docframework_DATA
)。如果顶层(例如docs/framework
)目录也包含目录(例如docs/framework/nest
),那么如果您要安装文件,则还需要为这些目录创建目的地。
如果这太繁琐,您可以编写install data hook来复制目录,这可能会更容易。
如果不想要目录结构,则可以将docs
中的文件列表添加到dist_doc_DATA
。您也可以为此编写安装数据挂钩。