c-通过config.h可移植地访问sysconfdir



我希望我的应用程序能够对make install(distrongysconf_DATA)期间安装的配置文件进行可移植访问。是否可以通过config.h访问$(sysconfdir)

是的,但你不应该根据官方的声音来做这件事(就像在中一样,我现在不打算在手册中搜索它),以便继续支持为要构建的特定对象覆盖它。

make CPPFLAGS="-USYSCONFDIR -DSYSCONFDIR=/blah" thisoneobject.o

因此,一个人应该做什么:

AM_CPPFLAGS = -DSYSCONFDIR="${sysconfdir}"

如果您使用autoheader,将其添加到您的config.ac将在config.h中输出SYSCONFDIR宏,并且它将使用值$(SYSCONFDIR)或${prefix}/等进行定义。

if test "x$sysconfdir" = 'x${prefix}/etc'; then
    if test "x$prefix" = 'xNONE'; then
        sysconfdir=$ac_default_prefix/etc
    else
        sysconfdir=$prefix/etc
    fi
fi
AC_DEFINE_UNQUOTED([SYSCONFDIR], ["$sysconfdir"], [location of system configuration directory])

但我强烈建议不要这样做,而是坚持使用-DSYSCONFDIR标志。它的代码更少,因此不太容易出错。在config.ac中使用我提到的条件可能不可移植,也不考虑可能遇到的每一种情况。使用-DSYSCONFDIR是最好的选择。有时候外表并不重要。

我认为最常见的是

Makefile.am 中添加以下内容

AM_CPPFLAGS = -DSYSCONFIR='"$(sysconfdir)"'

现在您可以访问源中的SYSCONFDIR

相关内容

  • 没有找到相关文章

最新更新