Подтвердить что ты не робот

Создайте 32 и 64-разрядные библиотеки для повышения в одно время?

Будет ли опция "--address-model = 32,64" создавать как библиотеки 32, так и 64 или вам нужно сделать две отдельные сборки?

4b9b3361

Ответ 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 целевых сборок без сброса пути зависимости от повышения.