我是m4的新用户,我正在尝试设置一个宏,允许用户在配置时./configure --with-mylib=/path/to/lib.so
指定库的位置。
在使用AC_ARG_WITH
的m4宏中,我将检查给定文件是否确实存在,然后将路径存储到所述lib。 MYLIB_PATH=esyscmd([dirname $withval])
。这会产生错误:
dirname: missing operand
shell似乎不知道$withval
。如何执行此命令?
谢谢,
安德鲁
答案 0 :(得分:3)
这是因为esyscmd
在生成m4
脚本时由configure
执行,即在“编译时”。使用
MYLIB_PATH=`dirname $with_mylib`
代替。
请注意,$withval
“实际上只是名为with_package
的shell变量的值,包中的任何非字母数字字符都会更改为_
”,因此/
出现{{1}} 1}}将被删除,它可能不是有效路径。