[英]Build 32 and 64 bit libraries for boost at sametime?
選項“--address-model = 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上使用darwin
工具集在我的Boost庫中嘗試過它。因此我懷疑你有你的語法錯誤,即不要使用“--name = values”,因為它們不是選項,而是使用“name = values”是需求規范。
文件說明(強調我的):
“顯式請求32位或 64位的代碼的生成。”
請注意,它沒有說“一個或多個”或“至少一個”,它表示......或者,這意味着我在閱讀它時的XOR並且您的經驗與之匹配。
允許值列表中的逗號僅用於分隔允許值集中的兩個項。
我最后做了以下事情:
兩者都優選地在增強已經檢查的搜索路徑中,例如階段或安裝文件夾。
然后我在標題下匯編搜索路徑后立即添加了這個塊(要編輯的FindBoost.cmake文件位於CMake安裝文件夾中的share / cmake-3.1 / Modules /文件夾下)
開始尋找升級庫
...
如果(Boost_LIBRARY_DIR)
...
萬一()
#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目錄重新附加到庫的boost搜索路徑,后綴為64或32位擴展標記。 這將選擇正確的目標庫進行鏈接,您可以安全地為32或64目標構建重新生成任何其他依賴的cmake庫(如CGAL),而無需重置boost依賴路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.