在 autotools 中获取 config.h 中的完整源路径

Getting full source path in config.h in autotools

我正在构建一个小型库,并且正在使用 autotools。代码在 c++ 中,它输出一些 html 代码。有很多样式表和 javascript 代码与 html 代码相关联。由于后者是固定的,代码将这些文件复制到写入 html 输出(动态)的文件夹中。输出路径是函数的参数。

问题是,要复制 javascript 和样式表,我需要知道源目录的完整路径。有些代码是基于模板的,代码直接在头文件里面。所以在 Makefile 中定义一个变量(编译器标志)对我不起作用。

我打算在 config.h 中定义一个变量,这样,如果 config.h 包含在原始头文件中,我将获取路径。

我试过使用

AC_DEFINE_UNQUOTED([DATA_PATH], ["$srcdir"], "data path"

在 autoconf 为 运行 之后,config.h 文件将 DATA_PATH 定义为“.” .但是我需要完整的安装路径。

执行此操作的 correct/best 方法是什么

您正在寻找 srcdir 的绝对路径。使用以下方法可以轻松完成:

 readlink -f $srcdir

回想一下,configure.ac 文件实际上是一个带有 m4 宏的 shell 脚本。所以 virtually 每个标准命令都可以访问: 以下是解决您的问题的可能方法:

srcdir2=`readlink -f $srcdir`
AC_DEFINE_UNQUOTED([DATA_PATH], ["$srcdir2"], [data path])