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

发布于 2024-12-29 09:31:38 字数 127 浏览 1 评论 0原文

我希望我的应用程序能够便携式访问 make install 期间安装的配置文件 (dist_sysconf_DATA)。是否可以通过 config.h 访问 $(sysconfdir)

I'd like my application to have portable access to the configuration files installed during make install (dist_sysconf_DATA). Is it possible to access $(sysconfdir) via config.h?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

同尘 2025-01-05 09:31:38

是的,但你不应该根据官方的声音这样做(例如,我现在不会搜索手册),以便继续支持针对要构建的特定对象覆盖它。

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

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

AM_CPPFLAGS = -DSYSCONFDIR=\"${sysconfdir}\"

It is, but you should not do this according to official voices (as in, I am not gonna search the manual for it now) so as to continue supporting overriding it for specific objects to be built.

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

Hence, what one is supposed to do:

AM_CPPFLAGS = -DSYSCONFDIR=\"${sysconfdir}\"
染火枫林 2025-01-05 09:31:38

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

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 标志。它的代码较少,因此不太容易出现问题。在configure.ac 中使用我提到的条件可能无法移植,或者需要考虑可能遇到的每种情况。使用 -DSYSCONFDIR 是最好的选择。有时候,外表并不重要。

If you're using autoheader, adding this to your configure.ac will output a SYSCONFDIR macro in your config.h, and it will be defined with the value $(sysconfdir) or ${prefix}/etc.

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])

But I would strongly recommend against doing that, and instead, stick with using the -DSYSCONFDIR flag. It's less code and therefore less prone to something going wrong. Using a condition in configure.ac such I mentioned may not be portable or take into account every case that might be encountered. Using -DSYSCONFDIR is the best option. Sometimes appearance just doesn't matter.

留一抹残留的笑 2025-01-05 09:31:38

我认为最常见的做法(这就是我所做的)

Makefile.am 中添加以下内容

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

现在您可以在源代码中访问SYSCONFDIR

What I believe is most commonly done (and this is what I do)

Add the following in your Makefile.am

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

And now you can access SYSCONFDIR in source

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文