3

我是 m4 的新手,正在尝试设置一个宏,允许用户在 configure-time 指定库的位置./configure --with-mylib=/path/to/lib.so

在 m4 宏 using 中AC_ARG_WITH,我将检查给定文件是否确实存在,然后将路径存储到所述库。MYLIB_PATH=esyscmd([dirname $withval]). 这会产生错误:

目录名:缺少操作数

shell 似乎不知道$withval. 我如何通过它来执行这个命令?

谢谢,

安德鲁

4

1 回答 1

3

那是因为在生成脚本时esyscmd执行,即在“编译时”。采用m4configure

MYLIB_PATH=`dirname $with_mylib`

反而。

请注意,$withval“实际上只是名为 的shell 变量的值,with_package包中的任何非字母数字字符都更改为_”,因此所有出现的/都将被删除,并且它可能不是有效路径。

于 2011-01-07T16:51:17.437 回答