通过config.h对sysconfdir进行可移植访问

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

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

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

因此,应该做什么:

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

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

Makefile.am添加以下内容

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

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

如果您正在使用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是最佳选择。 外表有时无关紧要。

    Interesting Posts