Будет ли опция "--address-model = 32,64" создавать как библиотеки 32, так и 64 или вам нужно сделать две отдельные сборки?
Создайте 32 и 64-разрядные библиотеки для повышения в одно время?
Ответ 1
Doing:
b2 address-model=32,64
или..
b2 address-model=32,64,32_64
Работайте и создавайте в зависимости от набора инструментов и поддержки платформы как 32, так и 64-разрядные цели в первом случае. И 32, 64 и 32 + 64 универсальные цели (скорее всего, только в OSX, используя набор инструментов darwin
. И под "works" я имею в виду, что я просто попробовал его с моей библиотекой Boost на OSX с помощью набора инструментов darwin
. Я подозреваю, что у вас неправильный синтаксис, т.е. Не используйте "--name = values", поскольку они не являются параметрами, но вместо этого используют "name = values" - это спецификации требований.
Ответ 2
В документации указано (внимание мое):
"Явно запросить либо 32-разрядную или генерацию 64-битного кода."
Обратите внимание, что он не говорит "один или несколько" или "по крайней мере один из", он говорит либо... или, что подразумевает XOR в моем чтении, и ваш опыт соответствует этому.
Запятая в списке допустимых значений состоит только для разделения двух элементов в наборе допустимых значений.
Ответ 3
В итоге я сделал следующее:
- Храните 32 библиотеки lib/dll в отдельной папке с именем /lib 32
- Сохраните сборки 64 lib/dll в папке seaprate с именем /lib 64
Оба предпочтительнее находятся в пути поиска, который уже проверяет boost, например, этап или папку установки.
Затем я добавил этот блок сразу после того, как пути поиска собраны под заголовком (файл FindBoost.cmake для редактирования находится в папке share/cmake-3.1/Modules/в папке установки CMake)
Начать поиск библиотек ускорения
...
если (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 целевых сборок без сброса пути зависимости от повышения.