2011-01-07 78 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變量的只是價值,與任何非字母數字字符的包變成_」,所以/所有出現將被刪除,它可能不會是有效的路徑。