web-dev-qa-db-fra.com

Construire boost avec msvc 14.1 (VS2017 RC)

J'essaie de construire boost 1.63 avec les derniers msvc 14.1 et VS2017 RC. Donc, j'ai fait tout ce que je fais normalement, j'ai ouvert le Cmd de développement, puis j'ai lancé le fichier bootstrap.bat et la commande

b2 -link=static -threading=multi

Pour une raison quelconque, j'ai eu ces erreurs:

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

Je ne suis pas familier avec boost alors peut-être que l'un de vous pourrait me donner un indice

40
Artur K.

Basé sur KindDragons et CPlusPlus OOA et D, j'ai compilé Boost 1.63. Pour 64bit. Exécutez l'invite de commande "Outils natifs x64 pour VS 2017".

1) Run: bootstrap.bat

2) ouvrir project-config.jam. Voici le mien:

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 ;

La partie: 14.10.25017 continue à changer avec les mises à jour de votre SDK Windows. Donc, mettez-le à jour en conséquence.

3) Run b2 toolset=msvc-14.0 address-model=64

70
Nick

Boost 1.63 ne prend pas complètement en charge VS2017, mais vous pouvez le piéger pour trouver le compilateur VC++ 2017:

  1. Exécuter bootstrap.bat Dans le répertoire boost
  2. Mettez à jour le fichier project-config.jam pour inclure: using msvc : 14.0 : <path to x86 or x64 cl.exe>. Devrait être quelque chose comme "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.24911\bin\HostX64\x64\cl.exe"
  3. Exécutez "Invite de commande du développeur pour VS 2017 RC" à partir du menu Démarrer de Windows pour renforcer à partir d'un shell configuré à l'aide des vcvars x86 ou x64.
  4. Exécutez b2 toolset=msvc-14.0 Dans cette invite de commande. Pour la construction x64, ajoutez address-model=64 À la ligne de commande b2.

UPDATE: Boost 1.64 devrait supporter VS2017

Exécutez "Invite de commandes x86 Native Tools pour VS 2017" ou "Invite de commande x64 Native Tools pour VS 2017" à partir du menu Démarrer, à partir de l'invite de commande interne exécutée b2:

32 bits: b2 toolset=msvc-14.1 --build-dir=.x86 --stagedir=stage_x86

64 bits: b2 toolset=msvc-14.1 address-model=64 --build-dir=.x64 --stagedir=stage_x64

Ajoutez link=shared Pour construire des bibliothèques partagées

35
KindDragon

J'ai créé un script batch qui génère des fichiers binaires 32 et 64 bits dans le référentiel github suivant: https://github.com/manuelgustavo/boost_build

Le secret réside dans l'utilisation de l'invite de commande du développeur de Visual Studio 2017. Il définit toutes les variables d'environnement selon les besoins.

Ensuite, vous pouvez exécuter quelque chose comme:

pour 32 bits:

b2.exe --toolset = msvc-14.0 architecture = modèle-adresse x86 = 32 --stagedir = ".\stage32" threading = multi -build-type = étape complète

et pour le 64 bits:

b2.exe --toolset = msvc-14.0 architecture = modèle-adresse x86 = 64 --stagedir = ".\stage64" threading = type-de-construction-multiple = étape complète

Ou si vous préférez, allez simplement à https://github.com/manuelgustavo/boost_build et suivez les étapes à partir de là.

10
manuel saraiva

Un autre conseil pour la construction avec Visual Studio 2017, qui a fonctionné dans mon cas. Si vous avez déjà construit Boost avec une version antérieure de Visual Studio, supprimez les fichiers de commandes temporaires générés par Boost bootstrap) situé dans le dossier TEMP de votre utilisateur, par exemple:

C:\Users\MYUSER~1\AppData\Local\Temp\b2_msvc_14.1_vcvarsx86_AMD64_.cmd

La solution provient de ce fil de discussion: http://boost.2283326.n4.nabble.com/Building-boost-fails-with-VS2017-v15-5-2-td4700909.html

1
tommyk