Построить 32 и 64-битные библиотеки для boost в sametime?
будет ли опция "--address-model=32,64 " создавать как 32, так и 64 библиотеки или вам нужно делать две отдельные сборки?
3 ответов
делаем:
b2 address-model=32,64
или..
b2 address-model=32,64,32_64
работа и производит, в зависимости от toolset и поддержки платформы, и 32 и 64 цели бита в первом случае. И 32, 64 и 32+64 универсальные цели (скорее всего, только на OSX с помощью darwin
набор инструментов. И под "работами" я имею в виду, что я только что попробовал его с моей библиотекой Boost на OSX с darwin
набор инструментов. Поэтому я подозреваю, что у вас неправильный синтаксис, т. е. не используйте "--name=values", поскольку они не являются параметрами, а вместо этого используют "name=values" - это спецификации требований.
в документации говорится (акцент мой):
"явно запрос или 32-бит или 64-разрядная генерация кода."
обратите внимание, что он не говорит "один или несколько" или "по крайней мере один из", он говорит либо ... или, что подразумевает XOR в моем чтении этого, и ваш опыт соответствует этому.
запятая в списке разрешенных значений - это просто разделение двух элементов в наборе разрешенных значений.
в итоге я сделал следующее:
- храните 32 сборки lib / dll в отдельной папке с именем / lib32
- храните сборки 64 lib / dll в папке seaprate с именем / lib64
оба предпочтительно находятся в пути поиска, который boost уже проверяет, например этап или установка.
затем я добавил этот блок сразу после того, как пути поиска собраны под заголовком ( FindBoost.с CMake файл для редактирования находится под share / cmake-3.1 / модули/ папка в папке установки CMake)
начать поиск библиотек boost
...
if (Boost_LIBRARY_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 в путь поиска boost для библиотек, суффикс с 64 или 32-битным расширением метка. Это выбирает правильные целевые библиотеки для связывания, и вы можете безопасно регенерировать любую другую зависимую библиотеку cmake (например, CGAL) для целевой сборки 32 или 64 без сброса пути зависимости boost.