Как вы собираете библиотеки x64 Boost в Windows?

Я много раз собирал библиотеки x86 Boost, но не могу создать библиотеки x64. Я запускаю "Visual Studio 2005 x64 Cross Tools Command Prompt" и запускаю свою обычную сборку:

bjam --toolset=msvc --build-type=complete --build-dir=c:\build install

Но он по-прежнему создает x86-файлы.lib (я проверял это с помощью dumpbin /headers). Что я делаю неправильно?

3 ответа

Решение

Вам нужно добавить address-model=64 параметр.

Посмотрите, например, здесь.

Принятый ответ правильный. Добавление этого в случае, если кто-то еще погуглит этот ответ и все еще не сможет создать версию для x64.

Вот что я должен был сделать, чтобы собрать Boost 1.63 на VS 15 2017 Community Edition.

Команды, выполненные из среды VS cmd shell. Сервис -> Командная строка Visual Studio

C:\Work\Boost_1_63> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat amd64
C:\Work\Boost_1_63> bootstrap.bat
C:\Work\Boost_1_63> bjam -j4 architecture=x86 address-model=64 link=static stage
C:\Work\Boost_1_63> bjam --prefix=C:\opt\boost architecture=x86 address-model=64 link=static install

Вы можете проверить, что полученный.lib x64 с помощью dumpbin:

C:\Work> dumpbin /headers C:\work\boost_1_63\stage\lib\libboost_locale-vc140-mt-1_63.lib | findstr machine
8664 machine (x64)
8664 machine (x64)
8664 machine (x64)
8664 machine (x64) 
...

С b2 команда:

b2 --build-dir=build/x64 address-model=64 threading=multi --build-type=complete --stagedir=./stage/x64

Это покажет default address-model: 32-bit вначале, но все равно будет собираться в 64-битной версии (как запутанно). Вам должны быть созданы библиотеки с такими именами, как library-vc140-mt-x64-1_71.dll подтверждая, что он 64-битный.

источник: Создание 32-битных и 64-битных библиотек Boost в Windows

Вы можете найти следующее свойство Boost.Build:

address-model=64
Другие вопросы по тегам