選項「--address-model = 32,64」是否會構建32和64庫,還是你必須做兩個獨立的構建?同時建立32位和64位庫以提升?
回答
這樣做:
b2 address-model=32,64
或..
b2 address-model=32,64,32_64
工作和生產,依賴於工具集和平臺支持,在第一種情況下32個和64位的目標。和32,64和32 + 64通用目標(很可能只在OSX上使用darwin
工具集)。「作品」我的意思是我剛剛用OSX上的Boost庫與darwin
工具集一起嘗試了它。你的語法錯誤,因爲他們沒有選擇,即不使用「--name =價值」,而是用「名稱=值」是有要求的規格
感謝您的語法澄清!也許我很挑剔,但是當語法不正確時,不應該給出一個錯誤(至少警告)?我猜這個故事的寓意是用b2小心! – PopcornKing 2012-02-03 05:29:13
從b2實現的POV中,語法不正確並不容易。它看到了一個正確的語法選項(任何以「 - 」開頭的,不能識別的),它被傳遞給Jamfiles,它們都以模塊化的方式查看選項,並決定它們不處理。沒有地方可以決定這個選項是無效的,也就是說,它最終被忽略了,這是b2 CLI不是一個封閉的語法集合的效果 – GrafikRobot 2012-02-03 13:31:37
我想你會遇到這個問題因爲不幸的是,32位和64位庫的名稱是相同的,所以需要運行b2兩次,例如,「--stagedir = stage32 address-model = 32」,一次使用「 --stagedir = stage64 address-model = 64「。 – mheyman 2013-03-13 16:49:35
的文檔狀態(重點煤礦):
「顯式請求任 32位或 64位代碼生成」。
請注意,它不會說「一個或多個」或「至少一個」,它表示...或者,這意味着XOR在我的閱讀中,並且您的體驗與此相匹配。
允許值列表中的逗號僅用於分隔允許值集合中的兩個項目。
該文檔還指出:「只有當特徵具有固定的一組值時,逗號才具有特殊含義,因此 bjam include = static,共享 未被特別處理。「對於地址模型,32和64似乎是固定的。感謝您的迴應。 – PopcornKing 2012-02-01 21:42:02
@PopcornKing - 我認爲「或者......或者」對特定標誌的評論取代了任何一般性評論,否則適用 – Flexo 2012-02-01 21:48:05
最後我做了以下內容:
- 商店32的lib/DLL建立在被叫/ LIB32
- 商店64的lib/DLL建立在被叫/ lib64下 一個seaprate文件夾中的單獨的文件夾
無論在那個提升是已經檢查,如階段或安裝文件夾的搜索路徑是優選。
然後我說這個塊中的搜索路徑的報頭(在FindBoost.cmake文件編輯正在份額/ cmake的-3.1 /模塊/文件夾中的CMake安裝文件夾)
下組裝後右開始尋找Boost庫
...
如果(Boost_LIBRAR Y_DIR)
...
ENDIF()
#generate 32 and 64 bit paths
if(WIN32)
if(CMAKE_CL_64)
#message("Finding BOOST on windows platform (64 bit)")
SET(BOOST_libdir_suffix_gen "64")
else()
#message("Finding BOOST on windows platform (32 bit)")
SET(BOOST_libdir_suffix_gen "32")
endif()
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS "")
foreach(SEARCH_DIR_NOPLATFORM ${_boost_LIBRARY_SEARCH_DIRS})
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS ${SEARCH_DIR_NOPLATFORM}${BOOST_libdir_suffix_gen})
endforeach()
foreach(SEARCH_DIR_PLATFORM ${_boost_LIBRARY_SEARCH_DIRS_PLATFORMS})
list (APPEND _boost_LIBRARY_SEARCH_DIRS ${SEARCH_DIR_PLATFORM})
endforeach()
else()
# no generation required (?)
endif()
它將所有現有lib目錄重新追加到圖書館升壓搜索路徑中,與64位或32位擴展標籤後綴。這會爲鏈接選擇正確的目標庫,並且可以安全地爲32或64目標版本重新生成任何其他依賴cmake庫(如CGAL),而無需重置boost依賴路徑。
- 1. 與32位和64位與視覺工作室建立提升
- 2. 建立爲64位,32位,Windows和Linux
- 3. Gluegen 32位和64位庫
- 4. Ogre 64位構建提升
- 5. Nexus/Maven可以同時存儲32位和64位工件嗎?
- 6. 32位和64位庫裝飾
- 7. 建立在WinXp 32的Win XP 64位
- 8. VS 2010建立在32位和64位(程序文件)
- 9. 爲32位和64位構建文件
- 10. 64位類型庫和32位類型庫不同步
- 11. 64位debian和32位酒
- 12. C# - 在32位和64位
- 13. 在32位和64位
- 14. 32位和64位性能
- 15. 32位和64位的ODP.NET
- 16. ODBC .NET 32位和64位
- 17. Java 32位和64位
- 18. 32位和64位CPU/OS
- 19. 64位庫,應該與32位和64位進程工作
- 20. Solr索引時間32位和64位
- 21. 在32位和64位機器上建立參考路徑不同的項目
- 22. 配置Visual Studio以創建32位和64位配置
- 23. XOR高32位,低32位,64位數
- 24. MySQL 32位或64位 - Apache 32位Windows 64位?
- 25. Visual C#Express:建立在64位,部署在32位?
- 26. 檢查應用程序是建立在32位還是64位?
- 27. C#指令指示的32位或64位建立
- 28. 不能建立在64位的Linux 32位葡萄酒
- 29. 在64位CentOS 5主機上建立32位
- 30. IIS7.5同時運行32位和64位的網站
**對於那些編譯i386 Mac OS **的人而且在這裏偶然發現,它並沒有工作,那麼你就處於自殺的邊緣(像我一樣),也加上這個標誌:'architecture = x86' – Mazyod 2013-06-19 00:41:02
我有類似的問題。我可以構建boost 32和64位(下面的答案中的32_64建議不適用於版本爲1.57.0的Windows),並將它們存儲在不同的lib目錄中,但是當引用這些庫時,組織的最佳或建議方法是什麼他們?我希望能夠構建32位和64項目,而無需在環境變量之間進行切換(例如,當使用cmake時) – StarShine 2015-04-02 12:51:20