m4 - 执行shell命令

时间:2011-01-07 16:42:53

标签: shell autoconf m4

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

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

dirname: missing operand

shell似乎不知道$withval。如何执行此命令?

谢谢,

安德鲁

1 个答案:

答案 0 :(得分:3)

这是因为esyscmd在生成m4脚本时由configure执行,即在“编译时”。使用

MYLIB_PATH=`dirname $with_mylib`

代替。

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