gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:59 25 4
gpt4 key购买 nike

我正在使用 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/ 的前缀p>

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`

最佳答案

您假设 _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。您也可以为此编写一个安装数据 Hook 。

关于c - Autotools 不安装目录(仅将 ./附加到目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com