(sub) Makefile 中未知的符号 ($(bindir), $(sysconfdir),...)
Symbols ($(bindir), $(sysconfdir),...) unknown in (sub) Makefiles
我是第一次使用 autotools,是用 perl (SQLTeX) 编写的工具,所以只需要安装,不需要编译。
顶层包含一个简单的 Makefile.am
:
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man doc
EXTRA_DIST = README.md
.PHONY: all-am
all-am:
@echo "Done!"
如果我也在子目录中创建 Makefile.am
个文件,那里似乎什么也没有发生,所以我只是坚持 Makefile
。来自 src/Makefile
(EDIT: this file is now renamed to Makefile.am
的片段):
SQLTeX: SQLTeX.pl
cat $^ | sed -e 's#{PERLDIR}#$(PL)#;s#{SYSCONFDIR}#$(sysconfdir)#' > $@
@chmod +x $@
符号PL
被设置为预期(在同一个makefile中定义),但是sysconfdir
是空的,尽管它是在[生成的顶层Makefile
中定义的=20=].
我做错了什么?
提前致谢!
What am I doing wrong?
虽然 Autotools 支持递归到您提供预构建 makefile 的目录,但您不能指望这些预构建 makefile 能够依赖 autotools 提供的变量,例如标准目录变量 bindir
和 sysconfdir
。因此,虽然 允许 依赖子目录中的手写 makefile,但这对您来说可能是错误的踪迹。
我建议回到这个:
If I create Makefile.am
files in the sub-directories too, nothing seems to happen there
并找出问题所在。 Autotools 绝对支持生成递归构建系统,每个目录一个 Makefile.am
是通常方法的一部分。如果它对您不起作用,那么我的第一个猜测是您忘记在 AC_CONFIG_FILES
列表中列出额外的 makefile。
作为替代方案,仅仅因为您有多个目录并不意味着您需要使用递归 make
。在单个 makefile 的支持下构建这样的项目是很有可能的,而 Autotools 可以帮助构建这样的 makefile。
我是第一次使用 autotools,是用 perl (SQLTeX) 编写的工具,所以只需要安装,不需要编译。
顶层包含一个简单的 Makefile.am
:
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man doc
EXTRA_DIST = README.md
.PHONY: all-am
all-am:
@echo "Done!"
如果我也在子目录中创建 Makefile.am
个文件,那里似乎什么也没有发生,所以我只是坚持 Makefile
。来自 src/Makefile
(EDIT: this file is now renamed to Makefile.am
的片段):
SQLTeX: SQLTeX.pl
cat $^ | sed -e 's#{PERLDIR}#$(PL)#;s#{SYSCONFDIR}#$(sysconfdir)#' > $@
@chmod +x $@
符号PL
被设置为预期(在同一个makefile中定义),但是sysconfdir
是空的,尽管它是在[生成的顶层Makefile
中定义的=20=].
我做错了什么?
提前致谢!
What am I doing wrong?
虽然 Autotools 支持递归到您提供预构建 makefile 的目录,但您不能指望这些预构建 makefile 能够依赖 autotools 提供的变量,例如标准目录变量 bindir
和 sysconfdir
。因此,虽然 允许 依赖子目录中的手写 makefile,但这对您来说可能是错误的踪迹。
我建议回到这个:
If I create
Makefile.am
files in the sub-directories too, nothing seems to happen there
并找出问题所在。 Autotools 绝对支持生成递归构建系统,每个目录一个 Makefile.am
是通常方法的一部分。如果它对您不起作用,那么我的第一个猜测是您忘记在 AC_CONFIG_FILES
列表中列出额外的 makefile。
作为替代方案,仅仅因为您有多个目录并不意味着您需要使用递归 make
。在单个 makefile 的支持下构建这样的项目是很有可能的,而 Autotools 可以帮助构建这样的 makefile。