Autotools不安装目录(仅将./附加到目录)

时间:2014-05-23 23:49:12

标签: c linux autotools

我正在使用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`

1 个答案:

答案 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。您也可以为此编写安装数据挂钩。

相关问题