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:

  1. Бежать bootstrap.bat в ускоренном каталоге
  2. Обновите файл 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"
  3. Запустите "Командная строка разработчика для VS 2017 RC" из меню "Пуск" Windows, чтобы повысить скорость из оболочки, настроенной с использованием x86 vcvars или x64 vcvars.
  4. Бежать 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

Другие вопросы по тегам