- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下用于安装 systemd 服务文件的 Autotools 代码,该文件必须安装在 $prefix
之外的 pkg-config 变量指定的目录中:
(我知道这不合适,但我无法改变 systemd 的工作方式。)
configure.ac
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
[Directory for systemd service files]),
[],
[with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
当您运行make distcheck
时,您的软件包将被安装到临时暂存目录中,然后被卸载。由于安装 $prefix
之外的内容会破坏这一点,因此我必须覆盖 distcheck 的 --with-systemdsystemunitdir
配置选项。我这样做是因为临时目录的位置在变量 $dc_install_base
中可用。我无法在此处传递绝对路径,并且 $prefix
或任何其他 $prefix
派生的变量(例如 $libdir
)将不正确在 distcheck 运行期间。
Makefile.am
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
我的问题有两个:
此功能 ($dc_install_base
) 似乎没有在任何地方记录。是官方支持还是实现细节?我相信,通常 Automake 私有(private)变量中有两个连续的下划线。
有更好的方法来完成我想做的事情吗?我知道 Autotools 的方法是将 systemdsystemunitdir 默认设置为 $prefix 的子目录,并让用户或发行版覆盖它。然而,对我来说,一个重要的要求是,人们应该能够从 tarball 中提取软件包,运行 ./configure && make
和 sudo make install
并让一切正常工作。如果 systemd 文件安装在 pkg-config 指定位置之外的其他位置,它将无法工作,而且会默默失败。
最佳答案
有点晚了,但是...
我也遇到了类似的问题 gobject-introspection
我(希望)通过添加几个配置选项和类似的东西来解决:
AM_DISTCHECK_CONFIGURE_FLAGS= \
--with-girdir='$$(datadir)/gir-1.0' \
--with-typelibdir='$$(libdir)/girepository-1.0'
就您的情况而言,我认为以下方法应该有效:
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir='$$(prefix)/$(systemdsystemunitdir)'
关键是你必须保护 $(prefix)
针对两次扩展: make 扩展(因此是双 $$
)和 configure
期间执行的 shell 扩展调用(使用单引号)。
关于autotools - 我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26980634/
我有以下用于安装 systemd 服务文件的 Autotools 代码,该文件必须安装在 $prefix 之外的 pkg-config 变量指定的目录中: (我知道这不合适,但我无法改变 system
我是一名优秀的程序员,十分优秀!