2013-01-02 197 views
0

這可能是一個noob問題,但我真的想弄明白:我有我的C++項目使用其他庫(例如log4cplus和getopt_pp)。我在eclipse下開發它,現在我使用autotools對它進行配置,以便使用makefile和配置腳本來分發它,以確保每個人都可以編譯它。 我的問題是:我怎樣才能獲得那個調用./configure./make會自動編譯&在最終用戶系統中安裝靜態庫?C++ makefile編譯依賴庫

  • 這樣做的最佳方法是什麼?
  • 什麼是安裝庫的最佳路徑?

回答

1

最好的方法是不要這樣做。相反,您應該記錄(在安裝文檔中)您的應用程序/庫依賴於某些其他庫(並且最好也是您測試它的哪個版本),並且您的腳本應該檢查這些依賴關係的存在。

的原因是:

  • 在有些情況下,例如圖書館應設系統之間的巨大差異。你的腳本永遠不會爲每個人正確做到。
  • 用戶可能已經安裝了兼容版本,可能更願意使用該版本,而不是可能與軟件捆綁在一起的版本。
  • 現在,將這樣的庫靜態地鏈接到應用程序中實際上非常罕見。所有主要編譯器都默認爲動態鏈接。這使得用戶更有可能已經安裝了這些庫的版本。
0

如果您將庫與您的項目一起運輸(而不是獨立分發並要求用戶確保安裝它們),那麼您可能希望將這些庫放在您自己的目錄中項目,並在你的configure.ac確保它通過增加Makefile輸出目標,以AC_OUTPUT是知道這些子目錄,即像

AC_OUTPUT(Makefile log4cplus/Makefile getopt_pp/Makefile yourprogramsrc/Makefile)

然後在根級別Makefile.am,讓它知道你的新子目錄,即

SUBDIRS=log4cplus getopt_pp yourprogramsrc

然後確保你的包括標誌和連接器選項都指向你,包括庫設置正確。