2011-12-20 136 views
9

我相信這是一個相當簡單的問題。我有一個非常簡單的configure.ac文件,我只用它來學習autoconf & pkg-config如何協同工作。該confgure.ac文件看起來像:使用pkg-config宏PKG_CHECK_MODULES失敗

AC_PREREQ(2.61) 
AC_INIT(autoconf_test, 1.0, [email protected]) 

PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4) 

然後我可以在命令行中執行autoconf和它產生的配置腳本。然而,當我運行配置腳本,我得到以下錯誤:

./configure: line 1618: syntax error near unexpected token `libusbmuxd,' 
./configure: line 1618: `PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4)' 

如果我使用pkg-配置程序的命令行進行檢查,看是否能找到這個庫,它成功。

/usr/lib/pkgconfig $pkg-config --libs --cflags --modversion libusbmuxd 

1.0.7 
-I/usr/local/Cellar/usbmuxd/1.0.7/include -L/usr/local/Cellar/usbmuxd/1.0.7/lib -lusbmuxd 

因此,它似乎很清楚,由於某些原因,PGK_CHECK_MODULE宏找不到,我也不知道爲什麼。

這可能不是操作系統特定的,但我使用的是Mac OS X 10.6.8。

+1

如果我沒有錯,這個宏是在一個'pkg.m4'文件中。你能在'/ usr/share/aclocal'或類似的目錄找到這個文件嗎? – ptomato 2011-12-20 21:48:06

+3

使用'aclocal --print'來確定要查找的目錄pkg.m4 – 2011-12-21 11:39:39

+0

您是如何安裝pkg-config以及如何安裝autotools的? – 2011-12-25 03:51:58

回答

16

當您進行引導(即運行autoreconf)時,aclocal無法找到pkg.m4。這是因爲pkg-config未安裝,或者已經安裝在aclocal不知道的地方。 (也就是說,它被安裝了一個與automake不同的前綴)。實際上有一個很大的思想流派,認爲使用pkg-config和autotools的最佳方式是不使用它。如果您仔細查看autoconf郵件列表存檔,您會看到這個有爭議的廣告。我並不是說你應該避免使用pkg-config(儘管我確實相信最好這樣做),但請注意,許多人建議完全避免它。

0

似乎自制的人認爲這不是他們的問題,並將其掃描成警告。超級沮喪,因爲沒有人會看到,因爲沒有人使用自制軟件或automake,並期望不得不深入瞭解什麼是錯的細節。 Here's the link.