2011-06-16 51 views
3

我試圖編譯使用節日庫的程序。查找自定義包括具有autoconf的目錄

基本上,要求是包含節日 estools頭文件夾在include路徑中,並且包含它們的庫路徑。

在正常安裝,他們只是呆在自己的文件夾,所以你必須

/some/path/festival/src/include 
/some/other/path/estools/include 

爲所需的搜索路徑,

/some/path/festival/src/lib 
/some/other/path/estools/lib 

爲庫路徑。

我認爲正確的處理方法是使用「--with-estools」和「--with-festival」配置選項。

但是,當它安裝在debian/ubuntu系統上時有不同的設置。 我想能夠處理這種設置,其中搜索路徑

/usr/include/festival 
/usr/include/estools 

和搜索路徑就是

/usr/lib 

我想檢測第二種情況,並處理它會自動,而如果第二種情況不滿足,仍然要求用戶指定前兩個目錄。我將如何做到這一點?

回答

2

是否有東西會妨礙像這樣設置選項?

  1. --festival-包括具有缺省值(如果未設置)到/ usr /包括/節

  2. --festival-庫具有缺省值(如果未設置)到/ usr/lib中/libfestival.XXX

這同樣適用於estools。

+0

這需要兩倍多的命令行選項,我想。另外,我真的很想檢測SYSTEM_INCLUDE_DIRECTORY/festival/festival.h中的任何文件,並且足夠聰明,只需將SYSTEM_INCLUDE_DIRECTORY/festival添加到搜索路徑即可。 – 2011-06-17 02:15:23

+0

好的,謝謝。我對autotools感到困惑。這是正確的答案。 – 2011-06-18 09:17:40

2

包管理員根本不需要擔心這些細節;這是用戶的責任。如果用戶在非標準位置安裝了庫,那麼用戶需要將LDFLAGS = -L/path/to/lib添加到CONFIG_SITE文件或每次調用configure或將該路徑放到編譯器的搜索路徑中一些系統依賴機制。同樣,用戶應該附加-I/path/to/include到CPPFLAGS。

換句話說,只需在標準位置安裝庫和頭文件,debian就可以做正確的事情。任何選擇將這些庫安裝在非標準位置的人都會給自己更多的工作。解決錯誤不是你的責任。

添加諸如--with-festival或--with-festival-headers之類的選項沒有幫助;用戶可以輕鬆地分配給LDFLAGS和CPPFLAGS,並且這些變量是標準化的。

+0

+1不能用錯誤的工具重新實現車輪。 ''--with-festival''這個選項在''--without-festival''意味着什麼時是合法的。換句話說,''--with''''--without''選項是爲了啓用或禁用某些其他軟件包的使用。搜索路徑的實際配置通過「LDFLAGS」和「CPPFLAGS」進行。 – adl 2011-09-07 06:37:02

1

某些平臺採用了文件系統Heirarchy標準 - http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

這應該真正反映在autoconf中,而不是堅持要求用戶通過設置CFLAGS來處理它,因爲/ opt/openssl/lib不再是「非標準」位置。

FHS還指定/ usr/local是「特定於此主機的本地數據的三級層次結構」。所以可以說,/ opt應該首先被檢查。

更多關於FHS的/ opt - >http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES