2011-08-01 58 views
0

我已經在android和osx上爲android創建了boost,並且遇到了boost庫名的問題。在Windows上,boost爲庫名添加了一些說明符,例如libboost_filesystem-gcc-mt-s-1_46.a,但是在osx上它省略了所有附加信息,僅僅是:libboost_filesystem.a。boost庫名+ android ndk + osx和windows build

現在的問題是我的Android.mk文件中需要鏈接到lib,但每個平臺的名稱都不相同。我首先尋找兩種解決方案之一:是否有一種方法可以告訴boost放棄其他說明符,並使用您在這裏看到的用於osx的格式(不管構建庫的平臺是什麼)或兩種:是一種在我的Android.mk中確定構建環境是否是Windows的方法?我更喜歡第一種解決方案,但是在這一點上或許會讓我走。

謝謝!

回答

1

bjam --help上市:

--layout=<layout>

確定是否選擇庫名稱和頭的位置,使得升壓或多個編譯器的多個版本可以在同一系統上使用。

  • versioned - boost二進制文件的名稱包括Boost版本號,編譯器的名稱和版本以及編碼的編譯屬性。 Boost標頭安裝在<HDRDIR>的子目錄中,其名稱包含Boost版本號。
  • tagged - boost二進制文件的名稱包括編碼的構建屬性(如變體和線程),但不包括編譯器名稱和版本或Boost版本。如果使用相同的編譯器構建多個Boost變體,則此選項非常有用。
  • system - 二進制文件名不包含Boost版本號或編譯器的名稱和版本號。升壓頭直接安裝到<HDRDIR>。該選項適用於正在構建分發包的系統集成商。

默認值在Windows上是'版本',在Unix上是'系統'。

這聽起來像你想建立或者在兩個平臺上--layout=tagged--layout=system,因此所得到的文件名是一致的。

+0

謝謝!完美的作品。 – mirswith