“pkglibexecdir”不是合法目录

“pkglibexecdir”不是合法目录

我正在遵循一些过时的说明,试图编译一些专有的、闭源的、不受支持的遗留代码。典型的 shell 会话如下所示:

$ autoreconf -fi

src/Makefile.am:7: error: 'pkglibexecdir' is not a legitimate directory for 'PYTHON'
autoreconf: automake failed with exit status: 1


$ cat src/Makefile.am

pkglibexecdir = $(libexecdir)/packagename

nobase_pkglibexec_PYTHON = \
        python_module_1.py
        python_module_2.py
        [...]

MAINTAINERCLEANFILES = Makefile.in
BUILT_SOURCES = some_source

some_source:
    ln -s ../lib/python/some_source some_source

我正在使用 GNU Autoconf 版本 2.69。我在同一项目中的其他包也遇到类似的问题。我假设这个问题有一个快速解决方案,但我对自动工具不太满意,而且我通过谷歌找到的大部分内容对我来说没有多大意义。

答案1

你需要使用一些技巧来规避automake警察的监管。看https://www.gnu.org/software/automake/manual/html_node/Uniform.html:

此功能还可以用于覆盖 Automake 执行的健全性检查,以诊断可疑目录/主要对(在不太可能的情况下,这些检查是不需要的,并且您确实知道自己在做什么)。例如,Automake 会在此输入上出错:

# Forbidden directory combinations, automake will error out on this.
pkglib_PROGRAMS = foo
doc_LIBRARIES = libquux.a

但它会成功:

# Work around forbidden directory combinations.  Do not use this
# without a very good reason!
my_execbindir = $(pkglibdir)
my_doclibdir = $(docdir)

my_execbin_PROGRAMS = foo
my_doclib_LIBRARIES = libquux.a

相关内容