Build Boost с MSVC 14.1 ( VS2017 RC)
Я пытаюсь собрать Boost 1.63 с последними MSVC 14.1 и VS2017 RC. Таким образом, я сделал все, что я делаю нормально, я открыл Development Cmd, а затем запустил bootstrap.bat и запустил команду
b2 -link=static -threading=multi
По какой-то причине я получил эти ошибки:
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:834: in generate-setup-cmd
*** argument error
* rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? )
* called with: ( msvc : : : default : )
* missing argument setup-script
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:1076: in configure-really
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:201: in configure
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:153: in msvc.init
E:/Coding/SDKs/boost_1_63_0/tools/build/src/build\toolset.jam:43: in toolset.using
E:/Coding/SDKs/boost_1_63_0/tools/build/src/build\project.jam:1052: in using
project-config.jam:3: in modules.load
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:249: in load-config
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:412: in load-configuration-files
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:524: in load
E:\Coding\SDKs\boost_1_63_0\tools\build\src/kernel\modules.jam:295: in import
E:\Coding\SDKs\boost_1_63_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build
E:\Coding\SDKs\boost_1_63_0\boost-build.jam:17: in module scope
Я не знаком с бустом, так что, возможно, один из вас мог бы дать мне подсказку
4 ответа
На основе ответов KindDragons и CPlusPlus OOA and D я скомпилировал Boost 1.63. Для 64бит. Запустите командную строку "Собственные инструменты x64 для VS 2017":
1) Выполнить: bootstrap.bat
2) открыть project-config.jam
, Вот мой:
import option ;
using msvc : 14.0 : "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe";
option.set keep-going : false ;
Часть: 14.10.25017 постоянно меняется с обновлениями для вашего Windows SDK. Так что обновите его соответственно.
3) Беги b2 toolset=msvc-14.0 address-model=64
Boost 1.63 не полностью поддерживает VS2017, но вы можете обмануть его, чтобы найти компилятор VC++2017:
- Бежать
bootstrap.bat
в ускоренном каталоге - Обновите файл project-config.jam, включив в него:
using msvc : 14.0 : <path to x86 or x64 cl.exe>
, Должно быть что-то вроде"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.24911\bin\HostX64\x64\cl.exe"
- Запустите "Командная строка разработчика для VS 2017 RC" из меню "Пуск" Windows, чтобы повысить скорость из оболочки, настроенной с использованием x86 vcvars или x64 vcvars.
- Бежать
b2 toolset=msvc-14.0
в этой командной строке. Для сборки x64 добавьтеaddress-model=64
в командной строке b2.
ОБНОВЛЕНИЕ: Boost 1.64 должен поддерживать VS2017
Запустите "Командную строку собственных инструментов x86 для VS 2017" или "Командную строку собственных инструментов x64 для VS 2017" из меню "Пуск", чем в командной строке. b2
:
32-бит: b2 toolset=msvc-14.1 --build-dir=.x86 --stagedir=stage_x86
64-бит: b2 toolset=msvc-14.1 address-model=64 --build-dir=.x64 --stagedir=stage_x64
добавлять link=shared
строить общие библиотеки
Я создал пакетный скрипт, который собирает 32- и 64-битные двоичные файлы в следующем репозитории github: https://github.com/manuelgustavo/boost_build
Секрет заключается в использовании командной строки Visual Studio 2017 для разработчиков. Он устанавливает все переменные среды по мере необходимости.
Затем из него вы можете выполнить что-то вроде:
для 32 бит:
b2.exe --toolset = архитектура msvc-14.0 = модель адреса x86 =32 --stagedir=".\stage32" threading=multi --build-type=complete stage
и для 64 бит:
b2.exe --toolset = архитектура msvc-14.0 = модель адреса x86 =64 --stagedir=".\stage64" threading=multi --build-type=complete stage
Или, если хотите, просто перейдите на https://github.com/manuelgustavo/boost_build и следуйте инструкциям оттуда.
Еще один совет по сборке с Visual Studio 2017, который работал в моем случае. Если вы уже создали Boost с более старой версией Visual Studio, удалите временные пакетные файлы, созданные сценарием начальной загрузки Boost, расположенным в папке TEMP вашего пользователя, например:
C:\Users\MYUSER~1\AppData\Local\Temp\b2_msvc_14.1_vcvarsx86_amd64_.cmd
Решение приходит из этой ветки: http://boost.2283326.n4.nabble.com/Building-boost-fails-with-VS2017-v15-5-2-td4700909.html