通过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是最佳选择。 外表有时无关紧要。