42 votes

Construisez un boost avec msvc 14.1 (VS2017 RC)

Je suis en train de construire boost 1.63 avec le dernier msvc 14.1 et VS2017 RC. Donc j'ai fait tout ce que je fais normalement, j'ai ouvert le Development Cmd et ensuite j'ai exécuté le bootstrap.bat et exécuté la commande

b2 -link=static -threading=multi

Pour une raison quelconque, j'ai obtenu 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 donc peut-être que l'un d'entre vous pourrait me donner un indice

1 votes

Les notes de version ne répertorient pas ce compilateur parmi ceux utilisés pour les tests. En regardant les sources de boost build, il semble ne pas prendre en charge cet ensemble d'outils. Étant donné que vous n'êtes pas familier avec boost, il peut être judicieux de commencer avec un compilateur qui est pris en charge et testé.

0 votes

Ce n'est pas le problème, j'ai eu le même problème avec plusieurs versions de Visual Studio - bien que cela semble uniquement affecter les builds 64 bits pour moi. Je vais poster un ticket sur le tracker de boost et je mettrai à jour ici s'ils répondent.

0 votes

84voto

Nick Points 121

Basé sur les réponses de KindDragons et CPlusPlus OOA et D, j'ai compilé Boost 1.63. Pour 64 bits. Exécutez l'invite de commande "x64 Native Tools Command Prompt for VS 2017" :

1) Exécutez : bootstrap.bat

2) Ouvrez project-config.jam. Voici la mienne :

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 change constamment avec les mises à jour du Kit SDK Windows. Veillez à la mettre à jour en conséquence.

3) Exécutez b2 toolset=msvc-14.0 address-model=64

4 votes

Si seulement je pouvais voter pour cela deux fois... J'ai presque créé un deuxième compte uniquement pour cela...

1 votes

Avec Visual Studio 2017, mise à jour 2, seule l'invite x64 Native Tools trouve correctement l'exécutable de l'assembleur ml64.exe (par exemple, ml.exe pour x86 et ml64.exe pour x64). Pour x64, à chaque fois que j'utilise l'invite Developer Tools, la réponse est : "'ml64' n'est pas reconnu en tant que commande interne ou externe, programme exécutable ou fichier de commandes.". Cependant, veuillez noter que les fichiers de sortie Boost x64 se produisent correctement avec l'invite x64 Native Tools. Les fichiers de sortie x86 alias Win32 Boost se produisent correctement avec l'invite 2017 Developer Tools. Seul un raccourci pour l'invite Developer Tools existe (par exemple, x86).

0 votes

Est-ce juste moi, ou cela ne fonctionne-t-il plus avec boost 1.67.0?

36voto

KindDragon Points 1656

Boost 1.63 ne prend pas en charge pleinement VS2017, mais vous pouvez le tromper pour trouver le compilateur VC++2017 :

  1. Exécutez bootstrap.bat dans le répertoire boost
  2. Mettez à jour project-config.jam pour inclure : using msvc : 14.0 : . Devrait ressembler à 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 commandes pour les développeurs VS 2017 RC" à partir du menu Démarrer de Windows pour amorcer à partir d'une coquille configurée à l'aide du vcvars x86 ou vcvars x64.
  4. Exécutez b2 toolset=msvc-14.0 dans cette invite de commandes. Pour la version x64, ajoutez address-model=64 à la ligne de commande b2.

MISE À JOUR: Boost 1.64 devrait prendre en charge VS2017

Exécutez "Invite de commandes pour les outils x86 natifs pour VS 2017" ou "Invite de commandes pour les outils x64 natifs pour VS 2017" à partir du menu Démarrer, puis à l'intérieur de l'invite de commandes, exécutez 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

1 votes

Cela a presque fonctionné pour moi! J'ai dû changer (2) pour que cela ressemble à ceci : using msvc : 14.0 : "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX64‌​\x64\cl.exe" sinon il y a une erreur error: msvc initialization: parameter 'version' inconsistent

12voto

manuel saraiva Points 341

J'ai créé un script batch qui construit à la fois des binaires 32 et 64 bits dans le dépôt github suivant : https://github.com/manuelgustavo/boost_build

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

Ensuite, vous pouvez exécuter quelque chose comme :

pour 32 bits :

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

et pour les 64 bits :

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

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

0 votes

Ravissant!!! Vous devriez ajouter les informations au script qu'il doit être lancé à partir de l'invite de commandes vs au fait

1 votes

Vous pouvez également exécuter "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars(32/64).bat" pour définir les variables d'environnement pour une cmd standard.

1 votes

Pourquoi avons-nous architecture=x86 même pour la version 64 bits ?

1voto

tommyk Points 631

Un autre conseil pour construire avec Visual Studio 2017 qui a fonctionné dans mon cas. Si vous avez déjà construit Boost avec une version plus ancienne de Visual Studio, supprimez les fichiers batch temporaires générés par le script d'amorçage de Boost situés 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 vient de ce fil de discussion : http://boost.2283326.n4.nabble.com/Building-boost-fails-with-VS2017-v15-5-2-td4700909.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X