我正在遵循一些过时的说明,试图编译一些专有的、闭源的、不受支持的遗留代码。典型的 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