2009-09-30 43 views
2

我正在嘗試編寫configure.ac文件,以便生成的配置腳本搜索包含給定靜態庫的庫目錄,例如, libsomething.a。我怎樣才能做到這一點?目前我只用一個位置檢查:如何獲取配置腳本以查找庫

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')]) 

但是我希望它能夠自動找到它。如果庫不在默認位置,我想配置爲說找不到庫,並且可以像通常那樣使用--use-something = path指定自定義位置。所以我還需要檢查是否提供了--use-something =路徑。我在創建配置文件方面很新穎,而且M4文檔並不是很容易遵循,所以感謝任何幫助。

謝謝!

回答

2

解決這個問題的最好方法是查看其他執行類似操作的autoconf宏。 Autoconf宏是Bourne shell腳本和M4代碼的混合體,因此它們可以從字面上解決任何可計算的問題。

下面是我爲MySQL++寫的一個宏的鏈接:mysql++.m4

+0

感謝您的示例腳本 - 我能夠弄明白這一點! – astrofrog 2009-10-01 00:16:48

15

這不是搜索的配置工作,其中安裝了庫。它應該只確保它們可用於鏈接器。如果用戶將它們安裝在不同的位置,他知道如何調用./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/lib以便工具可以找到該庫(這在--help輸出configure和標準INSTALL文件中進行了說明)。

另外--with-package--enable-package宏不應該用來指定路徑,這與許多第三方宏所做的相反。該GNU Coding Standards明確禁止這種用法:

不要使用--with選項 指定文件名使用查找 某些文件。這超出--with選項的範圍 。

CPPFLAGSLDFLAGS已經在這裏解決這個問題,那麼爲什麼重新開發和維護另一種機制?