2011-01-07 169 views
3

我是新来的m4,并且试图设置一个允许用户在配置时./configure --with-mylib=/path/to/lib.so指定库位置的宏。m4 - 执行一个shell命令

在使用AC_ARG_WITH的m4宏中,我将检查给定文件是否真实存在,然后将路径存储到所述lib。 MYLIB_PATH=esyscmd([dirname $withval])。这产生了错误:

dirname: missing operand

壳似乎不知道关于$withval。我如何通过执行此命令?

感谢,

安德鲁

+0

为什么不让用户通过设置LDFLAGS来指定库的位置? – 2011-01-14 14:54:49

+0

作为构建之前的环境变量? – ajwood 2011-01-14 15:33:05

回答

3

因为esyscmdm4在 “编译时” 产生你的configure脚本时,即执行的。使用

MYLIB_PATH=`dirname $with_mylib` 

代替。

注意$withval“实际上是一个名为with_package shell变量的只是价值,与任何非字母数字字符的包变成_”,所以/所有出现将被删除,它可能不会是有效的路径。