web-dev-qa-db-ja.com

msvc 14.1でビルドブースト(VS2017 RC)

最新のmsvc 14.1およびVS2017 RCでboost 1.63を構築しようとしています。だから私は普通にやることすべてをやったので、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

私はブーストに慣れていないので、おそらくあなたの一人が私にヒントを与えることができます

40
Artur K.

KindDragonsとCPlusPlus OOAとDの回答に基づいて、Boost 1.63をコンパイルしました。 64ビットの場合。 「VS 2017のx64ネイティブツールコマンドプロンプト」コマンドプロンプトを実行します。

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を実行します

70
Nick

Boost 1.63はVS2017を完全にはサポートしていませんが、VC++ 2017コンパイラを見つけるためにそれをだますことができます:

  1. Boostディレクトリで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. Windowsスタートメニューから「VS 2017 RCの開発者コマンドプロンプト」を実行して、x86 vcvarsまたはx64 vcvarsを使用して構成されたシェルからboostrapします。
  4. そのコマンドプロンプトでb2 toolset=msvc-14.0を実行します。 x64ビルドの場合、address-model=64をb2コマンドラインに追加します。

更新: Boost 1.64 はVS2017をサポートする必要があります

コマンドプロンプトrun b2内よりも、[スタート]メニューから[VS 2017のx86ネイティブツールコマンドプロンプト]または[VS 2017のx64ネイティブツールコマンドプロンプト]を実行します。

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を追加して共有ライブラリを構築します

35
KindDragon

次のgithubリポジトリで32ビットと64ビットの両方のバイナリをビルドするバッチスクリプトを作成しました: https://github.com/manuelgustavo/boost_build

秘密は、Visual Studio 2017の開発者コマンドプロンプトの使用にあります。必要に応じてすべての環境変数を設定します。

それから、次のようなものを実行できます:

32ビットの場合:

b2.exe --toolset = msvc-14.0 architecture = x86 address-model = 32 --stagedir = "。\ stage32" threading = multi --build-type = complete stage

そして、64ビットの場合:

b2.exe --toolset = msvc-14.0 architecture = x86 address-model = 64 --stagedir = "。\ stage64" threading = multi --build-type = complete stage

または必要に応じて、 https://github.com/manuelgustavo/boost_build に移動し、そこから手順を実行してください。

10
manuel saraiva

私の場合はVisual Studio 2017でビルドするためのもう1つのヒントがありました。 Visual Studioの古いバージョンでBoostを既にビルドしている場合は、Boostbootstrapによって生成された一時バッチファイルを削除します。ユーザーの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

1
tommyk