简单地说,我在我们正在开发的项目中运行了一个"buildconf.py.am.in“文件。并不是很擅长自动工具(我不得不为这份工作学习它们),这对我来说是相当奇怪的。里面有两个VAR=@VAR@
和两个VAR=[@]VAR[@]
。
怎么会有".am.in“呢?对我来说,这意味着我们编写一个.in来生成一个.am,该.am将用于生成另一个.in (或者.py,可能)。它看起来是“合法的”还是应该是“固定的”?因此,在configure
步骤之后,我确实有一个"buildconf.py.am",它在make
过程中用于生成.py。它包含以下内容:
do_subst = sed -e 's,\[@\]APP_VARDIR\[@\],$(localstatedir)/app/,g' \
-e 's,\[@\]APP_LOGDIR\[@\],$(logdir),g'
buildconf.py: buildconf.py.am
$(do_subst) < $(srcdir)/buildconf.py.am > buildconf.py
这是“正常”还是“可接受”?当我试图整合整件事情的时候,因为一切都变得“棘手”,而且很难更新,这似乎是我的大量修复之一。
泰!
编辑:
这个脚本主要为"plugins“使用的文件夹定义路径,因此需要一些东西,比如datadir或软安装。它还定义了这些插件要使用的文件夹结构,这样就可以通过所谓插件的python代码导入它们。此外,这些“插件”实际上是应用程序的服务器/路由层。
buildconf.py.am.in
文件不是生成的,而是手工编写的;buildconf.py.am
是在AC_CONFIG_FILES
中声明的(怎么可能呢?)它应该告诉“必须有一个buildconf.py.am.in.am
在它旁边,它将用于生成一个buildconf.py.am.in.in
然后生成一个"buildoncf.py.am.in
文件.但我们想要得到的只是buildconf.py
);configure
会生成buildconf.py.am
,设置的变量是两个布尔值,用于判断是否提供了mongoDB和web插件;make
生成最终的buildconf.py
,将在需要它持有的常量的地方导入。这是在此时完成的,因为它需要在配置步骤中扩展-I猜测变量。发布于 2017-02-16 19:03:45
我觉得这可能只是命名上的问题。
通常.am
文件包括在Makefile.am
中,并由automake
扩展,因此,例如,它们被用来定义源和目标的每个目录,同时保持整体构建的非递归性。
您可以在Makefile
级别包含文件,这样make
就可以执行包含,但是调用它们.am
听起来是错误的。
但在这种情况下,这两者都不是,这可能应该被称为.in.in
(有一些类似的脚本),但它感觉有点过头了。如果只在make
阶段应用所有的替换,那么一次处理可能会有同样的意义。
我想最有可能的情况是,在某种程度上,最初的扩展是不正确的,它是分层的,但不知道代码基,很难判断。
发布于 2022-04-22 13:39:26
看起来像一个三步自定义模板,例如在Unity中。模板首先由autogen.sh
:.am.in
-> .am
处理,然后由.am
-> .in
自动处理,最后由configure
script Makefile.in
-> Makefile
进行处理。
在autogen.sh
中它是:
if test x$has_ext_mod = xtrue; then
cat mono/mini/Makefile.am.in ../mono-extensions/mono/mini/Makefile.am > mono/mini/Makefile.am
else
cat mono/mini/Makefile.am.in > mono/mini/Makefile.am
fi
https://stackoverflow.com/questions/42272573
复制相似问题