在 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])
我正在构建一个小型库,并且正在使用 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])