วิธีใช้ Boost ใน Visual Studio 2010


คำตอบ:


512

ในขณะที่คำตอบของ Nateนั้นค่อนข้างดีอยู่แล้ว แต่ฉันจะขยายให้มากขึ้นโดยเฉพาะสำหรับ Visual Studio 2010 ตามที่ร้องขอและรวมถึงข้อมูลเกี่ยวกับการคอมไพล์ในคอมโพเนนต์ทางเลือกต่าง ๆ ซึ่งต้องใช้ไลบรารีภายนอก

หากคุณใช้เฉพาะส่วนหัวของไลบรารีสิ่งที่คุณต้องทำคือยกเลิกการเพิ่มการดาวน์โหลดและตั้งค่าตัวแปรสภาพแวดล้อม คำแนะนำด้านล่างตั้งค่าตัวแปรสภาพแวดล้อมสำหรับ Visual Studio เท่านั้นและไม่ข้ามระบบโดยรวม โปรดทราบว่าคุณต้องทำเพียงครั้งเดียว

  1. ยกเลิกการเพิ่มรุ่นล่าสุดของการเพิ่ม (1.47.0 ตามการเขียน) ลงในไดเรกทอรีที่คุณเลือก (เช่นC:\boost_1_47_0)
  2. สร้างโครงการใหม่ที่ว่างเปล่าใน Visual Studio
  3. เปิดตัวจัดการคุณสมบัติและขยายหนึ่งในการกำหนดค่าสำหรับแพลตฟอร์มที่คุณเลือก
  4. เลือก & คลิกขวาMicrosoft.Cpp.<Platform>.userและเลือกPropertiesเพื่อเปิดหน้าคุณสมบัติเพื่อแก้ไข
  5. เลือกVC++ Directoriesทางด้านซ้าย
  6. แก้ไขInclude Directoriesส่วนเพื่อรวมเส้นทางไปยังไฟล์ต้นฉบับบูสต์ของคุณ
  7. ทำซ้ำขั้นตอนที่ 3 - 6 สำหรับแพลตฟอร์มที่คุณต้องการหากจำเป็น

หากคุณต้องการใช้ส่วนของบูสต์ที่ต้องมีการสร้าง แต่ไม่มีฟีเจอร์ที่ต้องการการพึ่งพาจากภายนอกการสร้างมันก็ค่อนข้างง่าย

  1. ยกเลิกการเพิ่มรุ่นล่าสุดของการเพิ่ม (1.47.0 ตามการเขียน) ลงในไดเรกทอรีที่คุณเลือก (เช่นC:\boost_1_47_0)
  2. เริ่มพร้อมท์รับคำสั่ง Visual Studio สำหรับแพลตฟอร์มที่คุณเลือกและนำทางไปยังจุดที่เพิ่ม
  3. เรียกใช้: bootstrap.batเพื่อสร้าง b2.exe (ก่อนหน้านี้มีชื่อว่า bjam)
  4. เรียกใช้ b2:

    • Win32: b2 --toolset=msvc-10.0 --build-type=complete stage ;
    • x 64: b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

ไปเดินเล่นดูหนังหรือ 2 / ....

  1. ทำตามขั้นตอนที่ 2 - 6 จากชุดคำสั่งด้านบนเพื่อตั้งค่าตัวแปรสภาพแวดล้อม
  2. แก้ไขLibrary Directoriesส่วนเพื่อรวมเส้นทางไปยังเอาต์พุตไลบรารีบูสต์ของคุณ (ค่าเริ่มต้นสำหรับตัวอย่างและคำแนะนำด้านบนC:\boost_1_47_0\stage\libคือเปลี่ยนชื่อและย้ายไดเรกทอรีก่อนหากคุณต้องการให้ x86 & x64 เคียงข้างกัน (เช่น<BOOST_PATH>\lib\x86& <BOOST_PATH>\lib\x64)
  3. ทำซ้ำขั้นตอนที่ 2 - 6 สำหรับแพลตฟอร์มที่คุณเลือกหากจำเป็น

หากคุณต้องการส่วนประกอบที่เป็นทางเลือกคุณก็มีงานต้องทำอีกมาก เหล่านี้คือ:

  • Boost.IOStreams Bzip2 ตัวกรอง
  • Boost.IOStreams Zlib ฟิลเตอร์
  • Boost.MPI
  • Boost.Python
  • การสนับสนุน Boost.Regex ICU

Boost.IOStreams Bzip2 ตัวกรอง:

  1. แยกไฟล์ไลบรารี bzip2 เวอร์ชันล่าสุด (1.0.6 ตามการเขียน) ไฟล์ต้นฉบับลงในไดเรกทอรีที่คุณเลือก (เช่นC:\bzip2-1.0.6)
  2. ทำตามคำแนะนำชุดที่สองด้านบนเพื่อสร้างบูสต์ แต่เพิ่มในตัวเลือก-sBZIP2_SOURCE="C:\bzip2-1.0.6"เมื่อรัน b2 ในขั้นตอนที่ 5

Boost.IOStreams Zlib ฟิลเตอร์

  1. แยกไฟล์ไลบรารี zlib เวอร์ชันล่าสุด (1.2.5 จากการเขียน) ลงในไดเรกทอรีที่คุณเลือก (เช่นC:\zlib-1.2.5)
  2. ทำตามคำแนะนำชุดที่สองด้านบนเพื่อสร้างบูสต์ แต่เพิ่มในตัวเลือก-sZLIB_SOURCE="C:\zlib-1.2.5"เมื่อรัน b2 ในขั้นตอนที่ 5

Boost.MPI

  1. ติดตั้งการแจกจ่าย MPI เช่น Microsoft Compute Cluster Pack
  2. ทำตามขั้นตอนที่ 1 - 3 จากคำแนะนำชุดที่สองด้านบนเพื่อสร้างการเพิ่ม
  3. แก้ไขไฟล์project-config.jamในไดเรกทอรี<BOOST_PATH>ที่เกิดจากการรัน bootstrap เพิ่มในบรรทัดที่อ่านusing mpi ;(หมายเหตุช่องว่างก่อน ';')
  4. ทำตามขั้นตอนที่เหลือจากชุดคำสั่งที่สองด้านบนเพื่อสร้างการเพิ่ม หากการตรวจจับอัตโนมัติของการติดตั้ง MPI ล้มเหลวคุณจะต้องค้นหาและแก้ไขไฟล์บิลด์ที่เหมาะสมเพื่อค้นหา MPI ในตำแหน่งที่ถูกต้อง

Boost.Python

  1. ติดตั้งการแจกจ่าย Python เช่น ActivePython ของ ActiveState ตรวจสอบให้แน่ใจว่าการติดตั้ง Python อยู่ใน PATH ของคุณ
  2. ในการสร้างไลบรารี่รุ่น 32- บิตทั้งหมดต้องใช้ Python 32- บิตและในทำนองเดียวกันสำหรับเวอร์ชัน 64- บิต หากคุณติดตั้งหลายรุ่นด้วยเหตุผลดังกล่าวคุณจะต้องบอก b2 ว่าจะค้นหารุ่นใดและเมื่อใดควรใช้อันไหน วิธีหนึ่งในการทำเช่นนั้นก็คือการแก้ไขไฟล์project-config.jamในไดเรกทอรี<BOOST_PATH>ที่เกิดจากการรัน bootstrap เพิ่มสองบรรทัดต่อไปนี้ในการปรับตามความเหมาะสมสำหรับพา ธ การติดตั้ง Python & รุ่นของคุณ (สังเกตช่องว่างก่อนหน้า ';')

    using python : 2.6 : C:\\Python\\Python26\\python ;

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

    โปรดทราบว่าข้อกำหนด Python ที่ชัดเจนดังกล่าวทำให้ MPI build ล้มเหลว ดังนั้นคุณจะต้องทำอาคารแยกต่างหากที่มีและไม่มีข้อกำหนดเพื่อสร้างทุกอย่างถ้าคุณกำลังสร้าง MPI เช่นกัน

  3. ทำตามคำแนะนำชุดที่สองด้านบนเพื่อสร้างพลัง

การสนับสนุน Boost.Regex ICU

  1. แยกไฟล์ไลบรารี ICU4C เวอร์ชันล่าสุด (4.8 เมื่อเขียน) ลงในไดเรกทอรีที่คุณเลือก (เช่นC:\icu4c-4_8)
  2. <ICU_PATH>\source\allinoneเปิดสตูดิโอโซลูชั่นภาพใน
  3. สร้างทั้งหมดสำหรับการตั้งค่าการดีบั๊กและปล่อยสำหรับแพลตฟอร์มที่คุณเลือก อาจมีปัญหาในการสร้างการเผยแพร่ล่าสุดของ ICU4C ด้วย Visual Studio 2010 เมื่อผลลัพธ์สำหรับทั้งการตรวจแก้จุดบกพร่องและการสร้างรุ่นอยู่ในไดเรกทอรีเดียวกัน (ซึ่งเป็นพฤติกรรมเริ่มต้น) วิธีแก้ปัญหาที่เป็นไปได้คือการสร้างทั้งหมด (จากการตรวจแก้จุดบกพร่องบิลด์) และจากนั้นทำการสร้างใหม่ทั้งหมดในการกำหนดค่าที่ 2 (เช่นรุ่นที่วางจำหน่าย)
  4. หากการสร้างสำหรับ x64 คุณจะต้องใช้งาน x64 OS เนื่องจากมีขั้นตอนการสร้างโพสต์ที่เกี่ยวข้องกับการเรียกใช้แอปพลิเคชัน 64 บิตที่สร้างขึ้น
  5. เลือกลบไดเรกทอรีแหล่งเมื่อคุณทำเสร็จแล้ว
  6. ทำตามคำแนะนำชุดที่สองด้านบนเพื่อสร้างบูสต์ แต่เพิ่มในตัวเลือก-sICU_PATH="C:\icu4c-4_8"เมื่อรัน b2 ในขั้นตอนที่ 5

@ โซริน: ทำไมคุณถึงต้องเปลี่ยนมัน?
jalf

6
ควรสังเกตว่าคุณต้องเลือกเครื่องมือ> การตั้งค่า> โหมดผู้เชี่ยวชาญเพื่อให้สามารถดูแผ่นคุณสมบัติได้ เอา googling ให้ฉันเพื่อหาสิ่งนี้ในที่สุด ...
Zack The Human

@KTC: จริงๆแล้ว "การตั้งค่าผู้เชี่ยวชาญ" มีให้จากเมนูเครื่องมือ> การตั้งค่า ฉันใช้ VSC ++ 2010 Express Edition และไม่เปิดใช้งาน "การตั้งค่าผู้เชี่ยวชาญ" คุณจะไม่เห็นแผ่นคุณสมบัติ
Zack The Human

11
หากคุณต้องการทั้ง x64 และ win32 เคียงข้างกันเพิ่ม "--stagedir = lib / win32" และ "--stagedir = lib / x64" ไปยังบิลด์ที่เกี่ยวข้อง
M. Tibbits

3
สำหรับวิดีโอสอนวิธีสร้างและกำหนดค่าบูสต์สำหรับ Visual Studio 2010 สิ่งนี้อาจช่วยได้: youtube.com/watch?v=5AmwIwedTCM
Christophe

158

ในขณะที่คำแนะนำในเว็บไซต์ Boost มีประโยชน์ แต่นี่เป็นเวอร์ชันย่อที่สร้างไลบรารี x64

  • คุณจะต้องทำสิ่งนี้หากคุณใช้ห้องสมุดที่ระบุไว้ในส่วนที่ 3ของหน้าคำแนะนำ (เช่นหากต้องการใช้ Boost.Filesystem ต้องมีการรวบรวม) หากคุณไม่ได้ใช้สิ่งใด ๆ เพียงแค่เปิดเครื่องรูดและไป

สร้างไลบรารี 32 บิต

สิ่งนี้จะติดตั้งไฟล์ส่วนหัว Boost ใต้C:\Boost\include\boost-(version)และC:\Boost\lib\i386ไลบรารี่แบบ 32 บิต โปรดทราบว่าตำแหน่งเริ่มต้นสำหรับไลบรารีคือC:\Boost\libแต่คุณจะต้องวางไว้ในi386ไดเรกทอรีหากคุณวางแผนที่จะสร้างสำหรับสถาปัตยกรรมหลาย ๆ

  1. Unzip Boost เป็นไดเรกทอรีใหม่
  2. เริ่มต้นพรอมต์คำสั่ง MSVC แบบ 32 บิตและเปลี่ยนเป็นไดเรกทอรีที่ขยายไฟล์ซิปออก
  3. วิ่ง: bootstrap
  4. วิ่ง: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

    • สำหรับ Visual Studio 2012 ให้ใช้ toolset=msvc-11.0
    • สำหรับ Visual Studio 2010 ให้ใช้ toolset=msvc-10.0
    • สำหรับ Visual Studio 2017 ให้ใช้ toolset=msvc-14.1
  5. เพิ่มC:\Boost\include\boost-(version)ไปยังเส้นทางของคุณ

  6. เพิ่มC:\Boost\lib\i386ไปยังเส้นทาง libs ของคุณ

สร้างไลบรารี 64 บิต

สิ่งนี้จะติดตั้งไฟล์ส่วนหัวของ Boost ใต้C:\Boost\include\boost-(version)และC:\Boost\lib\x64ไลบรารี่ 64- บิตใต้ โปรดทราบว่าตำแหน่งเริ่มต้นสำหรับไลบรารีคือC:\Boost\libแต่คุณจะต้องวางไว้ในx64ไดเรกทอรีหากคุณวางแผนที่จะสร้างสำหรับสถาปัตยกรรมหลาย ๆ

  1. Unzip Boost เป็นไดเรกทอรีใหม่
  2. เริ่มต้นพรอมต์คำสั่ง MSVC 64 บิตและเปลี่ยนเป็นไดเรกทอรีที่ขยายไฟล์ซิปออก
  3. วิ่ง: bootstrap
  4. วิ่ง: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • สำหรับ Visual Studio 2012 ให้ใช้ toolset=msvc-11.0
    • สำหรับ Visual Studio 2010 ให้ใช้ toolset=msvc-10.0
  5. เพิ่มC:\Boost\include\boost-(version)ไปยังเส้นทางของคุณ
  6. เพิ่มC:\Boost\lib\x64ไปยังเส้นทาง libs ของคุณ

24
หากคุณไม่ต้องการสร้างด้วยตัวเองคุณสามารถติดตั้งไบนารีที่สร้างไว้ล่วงหน้าได้จาก sourceforge: sourceforge.net/projects/boost/files/boost-binariesสำหรับการเพิ่มแต่ละรุ่นมีตัวติดตั้งสำหรับแต่ละเวอร์ชัน visual studio (ใน ทั้ง 32 และ 64 บิต)
teeks99

อะไรคือสาเหตุของการใช้สถาปัตยกรรม = x86 แทนที่จะเป็นสถาปัตยกรรม = x64 เมื่อทำการสร้าง 64 บิต แก้ไข: เพิ่งค้นพบวิธีที่ยาก: P คุณไม่สามารถเปลี่ยนเป็น 64 ...
kayleeFrye_onDeck

เฮ้ @ teeks99 ฉันเข้าเยี่ยมชมลิงค์ของคุณให้ แต่สำหรับรุ่น v1.4.7 ฉันพบไฟล์มากเกินไปฉันควรใช้อันไหนล่ะ ไม่ดีกว่าหากมีไฟล์เดียว (ไลบรารี่ / dll) ที่เหมาะกับการใช้งานฟังก์ชั่นของบูสต์
gumuruh

2
ลองsourceforge.net/projects/boost/files/boost-binaries/ ......และคุณควรจะหาโปรแกรมติดตั้งสำหรับ 1.47.0 ในนั้นขึ้นอยู่กับว่าคุณต้องการ 32 บิตหรือ 64 บิต ข้างในนั้นคุณจะพบ DLLs มากมายนั่นเป็นเพียงวิธีเพิ่มประสิทธิภาพ อย่างไรก็ตามตราบใดที่คุณชี้โครงการภาพของคุณไปยังไดเรกทอรีที่ถูกต้องมันไม่สำคัญว่าจะมีจำนวนเท่าใดในนั้นเพราะมันจะเลือกรายการที่ถูกต้องที่ต้องการโดยอัตโนมัติ
teeks99

20

คุณสามารถลอง -j% NUMBER_OF_PROCESSORS% เป็นอาร์กิวเมนต์ได้ซึ่งจะใช้คอร์ทั้งหมดของคุณ ทำให้สิ่งต่าง ๆ เร็วเป็นพิเศษบน quad core ของฉัน


3
นี่คือหนึ่งล้าน .... นี่คือสิ่งที่ในที่สุดฉันก็ใช้ร่วมกับ VS2015: b2 -j% NUMBER_OF_PROCESSORS% toolset = msvc-14.0 - build-type = complete --libdir = C: \ Boost \ lib \ x64 architecture = x86 address-model = 64 การติดตั้ง
kayleeFrye_onDeck

สำหรับ powershell มัน: -j "$ env: NUMBER_OF_PROCESSORS"
Oscillon

14

ฉันสามารถแนะนำเคล็ดลับต่อไปนี้: สร้างboost.propsไฟล์พิเศษ

  1. เปิดตัวจัดการคุณสมบัติ
  2. คลิกขวาที่โหนดโครงการของคุณและเลือก 'เพิ่มแผ่นคุณสมบัติโครงการใหม่'
  3. เลือกสถานที่และตั้งชื่อแผ่นคุณสมบัติของคุณ (เช่น c: \ mystuff \ boost.props)
  4. ปรับเปลี่ยนโฟลเดอร์ Include และ Lib เพิ่มเติมไปยังพา ธ การค้นหา

ขั้นตอนนี้มีค่าที่เพิ่มรวมอยู่ในโครงการที่คุณต้องการรวมไว้อย่างชัดเจนเท่านั้น เมื่อคุณมีโครงการใหม่ที่ใช้การเพิ่มให้ทำ:

  1. เปิดตัวจัดการคุณสมบัติ
  2. คลิกขวาที่โหนดโครงการและเลือก 'เพิ่มแผ่นคุณสมบัติที่มีอยู่'
  3. เลือกแผ่นคุณสมบัติเพิ่ม

แก้ไข (แก้ไขดังต่อไปนี้จาก @ jim-fred):

boost.propsไฟล์ผลลัพธ์ดูเหมือนเป็นอย่างนี้ ...

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
    <LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>

มันมีมาโครผู้ใช้สำหรับตำแหน่งของไดเรกทอรีเพิ่ม (ในกรณีนี้ D: \ boost_1_53_0) และอีกสองพารามิเตอร์อื่น ๆ ได้แก่ IncludePath และ LibraryPath คำสั่ง#include <boost/thread.hpp>จะค้นหา thread.hpp ในไดเรกทอรีที่เหมาะสม (ในกรณีนี้ D: \ boost_1_53_0 \ boost \ thread.hpp) ไดเรกทอรี 'stage \ lib \' อาจมีการเปลี่ยนแปลงขึ้นอยู่กับไดเรกทอรีที่ติดตั้ง

ไฟล์ boost.props นี้อาจอยู่ในD:\boost_1_53_0\ไดเรกทอรี


13

คุณต้องการส่วนใดของ Boost มีหลายสิ่งที่เป็นส่วนหนึ่งของ TR1 ที่มาพร้อมกับ Visual Studio ดังนั้นคุณสามารถพูดได้ง่ายๆเช่น:

#include <tr1/memory>

using std::tr1::shared_ptr;

ตามเจมส์สิ่งนี้ควรใช้งานได้ (ใน C ++ 0x):

#include <memory>

using std::shared_ptr;

5
ใน VS2010 ไลบรารี TR1 ที่กำลังกลายเป็นส่วนหนึ่งของ C ++ 0x ได้ถูกย้ายไปที่stdเนมสเปซทั้งหมดเนื่องจากอยู่ในมาตรฐาน C ++ 0x (ฉันคิดว่าพวกเขาอาจอยู่ในstd::tr1เนมสเปซเช่นกันเพื่อความเข้ากันได้ย้อนหลัง)
James McNellis

6

เธรดนี้ใช้เวลาพักหนึ่งแล้วและฉันคิดว่าฉันจะเพิ่มบางอย่างเกี่ยวกับวิธีสร้าง Boost ให้เร็วที่สุดเท่าที่จะทำได้บนฮาร์ดแวร์เฉพาะของคุณ

หากคุณมี 4 หรือ 6-core ให้ใช้ -j5 หรือ -j7 ตามลำดับ ไม่แน่นอนไม่สร้างมาตรฐานหรือ -j2 เว้นแต่คุณจะมีดูอัลคอร์แน่นอน

ฉันใช้ Sandy Bridge Extreme พร้อมสต็อกโอเวอร์คล็อก 3930K (6 คอร์) บนสถานีหลักของฉัน แต่มี 2600k (4 คอร์) บนกล่องสำรองข้อมูลเก่าและแนวโน้มคือฉันได้รับเวลาคอมไพล์ Boost ที่ดีที่สุดด้วย N + 1 บิลด์โปรเซสที่ N คือจำนวนของฟิสิคัลคอร์ N + 2 มาถึงจุดที่ผลตอบแทนลดลงและเวลาเพิ่มขึ้น

หมายเหตุ: เปิดใช้งาน Hyperthreading, 32GB RAM DDR3, Samsung 840 EVO SSD

-j7 บน 6-core (2 นาทีและ 51 วินาที) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 2
Seconds           : 51
Milliseconds      : 128
Ticks             : 1711281830
TotalDays         : 0.0019806502662037
TotalHours        : 0.0475356063888889
TotalMinutes      : 2.85213638333333
TotalSeconds      : 171.128183
TotalMilliseconds : 171128.183

-j6 บน 6-core (3 นาที 2 วินาที) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 2
Milliseconds      : 809
Ticks             : 1828093904
TotalDays         : 0.00211584942592593
TotalHours        : 0.0507803862222222
TotalMinutes      : 3.04682317333333
TotalSeconds      : 182.8093904
TotalMilliseconds : 182809.3904

-j8 บน 6-core (3 นาทีและ 17 วินาที) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 17
Milliseconds      : 652
Ticks             : 1976523915
TotalDays         : 0.00228764342013889
TotalHours        : 0.0549034420833333
TotalMinutes      : 3.294206525
TotalSeconds      : 197.6523915
TotalMilliseconds : 197652.3915

-j7 สร้างบน 6-core

การกำหนดค่า

Building the Boost C++ Libraries.


Performing configuration checks

    - 32-bit                   : yes (cached)
    - arm                      : no  (cached)
    - mips1                    : no  (cached)
    - power                    : no  (cached)
    - sparc                    : no  (cached)
    - x86                      : yes (cached)
    - has_icu builds           : no  (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - zlib                     : no  (cached)
    - iconv (libc)             : no  (cached)
    - iconv (separate)         : no  (cached)
    - icu                      : no  (cached)
    - icu (lib64)              : no  (cached)
    - message-compiler         : yes (cached)
    - compiler-supports-ssse3  : yes (cached)
    - compiler-supports-avx2   : yes (cached)
    - gcc visibility           : no  (cached)
    - long double support      : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - zlib                     : no  (cached)

ฉันทราบว่าการสร้าง 64 บิตใช้เวลานานขึ้นฉันต้องทำการเปรียบเทียบแบบเดียวกันกับสิ่งเหล่านั้นและอัปเดต


5

ข้อควรทราบเล็ก ๆ น้อย: ถ้าคุณต้องการลดเวลาในการรวบรวมคุณสามารถเพิ่มการตั้งค่าสถานะ

-j2

เพื่อเรียกใช้งานบิลด์ขนานสองรายการในเวลาเดียวกัน การทำเช่นนี้อาจลดให้ดูหนังได้หนึ่งเรื่อง)


2
การอธิบายวิธีใช้-j2จะช่วยเพิ่มมูลค่าให้กับคำตอบของคุณ
ST3

5

ดาวน์โหลดบูสเตอร์จาก: http://www.boost.org/users/download/ เช่นโดย svn

  • Windows -> เต่า (วิธีที่ง่ายที่สุด)

หลังจากนั้น: cmd -> ไปที่ไดเรกทอรีเพิ่ม ("D: \ boostTrunk" - ที่คุณชำระเงินหรือดาวน์โหลดและแยกแพคเกจ): คำสั่ง: bootstrap

เราสร้าง bjam.exe ใน ("D: \ boostTrunk") หลังจากนั้น: คำสั่ง: bjam toolset = msvc-10.0 variant = debug, ปล่อยเธรด = multi link = static (ใช้เวลาสักครู่ ~ 20 นาที)

หลังจากนั้น: เปิด Visual Studio 2010 -> สร้างโครงการเปล่า -> ไปที่คุณสมบัติของโครงการ -> กำหนด:

คุณสมบัติของโครงการ VS 2010

วางรหัสนี้และตรวจสอบว่ามันใช้งานได้หรือไม่

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>

using namespace std;

struct Hello 
{
    Hello(){ 
        cout << "Hello constructor" << endl;
    }

    ~Hello(){
        cout << "Hello destructor" << endl;
        cin.get();
    }
};


int main(int argc, char**argv)
{
    //Boost regex, compiled library
    boost::regex regex("^(Hello|Bye) Boost$");
    boost::cmatch helloMatches;
    boost::regex_search("Hello Boost", helloMatches, regex);
    cout << "The word between () is: " << helloMatches[1] << endl;

    //Boost shared pointer, header only library
    boost::shared_ptr<Hello> sharedHello(new Hello);

    return 0;
}

แหล่งข้อมูล: https://www.youtube.com/watch?v=5AmwIwedTCM


4

นี่คือวิธีที่ฉันสามารถใช้ Boost:

  1. ดาวน์โหลดและแยกไฟล์ zip ของ Boost libraries
  2. เรียกใช้ไฟล์ bootstrap.bat แล้วเรียกใช้ bjam.exe
  3. รอประมาณ 30 นาทีหรือมากกว่านั้น
  4. สร้างโครงการใหม่ใน Visual Studio
  5. ไปที่โครงการ -> คุณสมบัติ -> ตัวเชื่อมโยง -> ทั่วไป -> ไดเรกทอรีไลบรารีเพิ่มเติมและเพิ่มไดเรกทอรีเพิ่ม/ สเตจ / libลงไป
  6. ไปที่โครงการ -> คุณสมบัติ -> C / C ++ -> ทั่วไป -> เพิ่มเติมรวมไดเรกทอรีและเพิ่มไดเรกทอรีเพิ่มเข้าไป

คุณจะสามารถสร้างโครงการของคุณได้โดยไม่มีข้อผิดพลาด!


3

โปรแกรมติดตั้ง Windows ที่อยู่ที่นี่ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ฉันทำตามขั้นตอนต่อไปนี้:

  1. ทำตามตัวช่วยสร้างการติดตั้งจนกระทั่งเสร็จสิ้น
  2. เรียกใช้ Visual Studio
  3. สร้างโครงการ C ++ ใหม่
  4. เปิดคุณสมบัติโครงการ (สามารถดูได้โดยคลิกขวาที่ชื่อโครงการในตัวสำรวจโซลูชัน)
  5. ภายใต้ "C / C ++> ทั่วไป> ไดเรกทอรีรวมเพิ่มเติม" เพิ่มเส้นทางที่เพิ่มไดเรกทอรีราก ค่าเริ่มต้นสำหรับเวอร์ชันของฉันคือ C: \ local \ boost_1_63_0 หมายเลขหลังจาก "เพิ่ม" เป็นรุ่นของการเพิ่ม
  6. ในคุณสมบัติโครงการภายใต้ "ตัวเชื่อมโยง> ไดเรกทอรีไลบรารีเพิ่มเติม" เพิ่มไดเรกทอรีสำหรับไฟล์ไลบรารี ค่าเริ่มต้นสำหรับเวอร์ชันของฉันคือ C: \ local \ boost_1_63_0 \ lib64-msvc-14.0 หมายเลขหลังจาก "lib" เกี่ยวข้องกับเป้าหมายการสร้าง (32 บิตหรือ 64 บิตใน Visual Studio) และหมายเลขหลังจาก "msvc" เกี่ยวข้องกับเวอร์ชันของ Visual Studio (14.0 เกี่ยวข้องกับ Visual Studio 2015 แต่ฉัน ใช้กับ 2017 Visual Studio)

โชคดี!


2

KTC เป็นคำตอบหลักที่ให้ข้อมูลเพิ่มเติมเล็กน้อย:

หากคุณกำลังใช้ Visual Studio c ++ 2010 Express ฟรีและจัดการเพื่อให้มันรวบรวมไบนารี 64- บิตและตอนนี้ต้องการใช้เพื่อใช้ Boost libaries รุ่น 64 บิตคุณอาจจบด้วย 32- บิตไลบรารี (ระยะทางของคุณอาจแตกต่างกันไป แต่ในเครื่องของฉันนี่เป็นกรณีที่น่าเศร้า)

ฉันสามารถแก้ไขได้โดยใช้สิ่งต่อไปนี้: ระหว่างขั้นตอนที่อธิบายไว้ข้างต้นเป็น

  1. เริ่มต้นพรอมต์คำสั่ง MSVC แบบ 32 บิตและเปลี่ยนเป็นไดเรกทอรีที่ขยายไฟล์ซิปออก
  2. ทำงาน: bootstrap

ฉันใส่สายเพื่อ 'setenv' เพื่อตั้งค่าสภาพแวดล้อม สำหรับการสร้างการเผยแพร่ขั้นตอนข้างต้นกลายเป็น:

  1. เริ่มต้นพรอมต์คำสั่ง MSVC แบบ 32 บิตและเปลี่ยนเป็นไดเรกทอรีที่ขยายไฟล์ซิปออก
  2. เรียกใช้: "Cs \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ setenv.cmd" / Release / x64
  3. ทำงาน: bootstrap

ฉันพบข้อมูลนี้ที่นี่: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html


คุณรู้หรือไม่ว่าสิ่งนี้นำไปใช้กับ Community Edition ของ VS2015? ฉันดูเหมือนจะจบลงด้วยไบนารี 32 บิตแม้จะมี "address-model = 64"
paxos1977

@ paxos1977 ขออภัยฉันไม่รู้ - ฉันยังไม่ได้ลอง VS2015 ด้วยตัวเอง
ecotax

มันใช้กับ VS 2015 Express สำหรับรุ่นเดสก์ท็อปได้ด้วยตัวเอง ทางเลือกสำหรับ setenv คือเรียกใช้ "vcvarsall x86_amd64"
introiboad

1

ตัวอย่างที่เรียบง่ายเพื่อให้คุณเริ่มต้นใช้งานใน Visual Studio:

1. ดาวน์โหลดและเปิดเครื่องรูด Boost จากที่นี่

2. สร้างโปรเจ็กต์เปล่าของ Visual Studio โดยใช้ตัวอย่างบูสต์ไลบรารีที่ไม่ต้องการการคอมไพล์แยก:

#include <iostream>
#include <boost/format.hpp>

using namespace std;  
using namespace boost;  

int main()  
{  
    unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };  

    cout << format("%02X-%02X-%02X-%02X-%02X")  
            % arr[0]  
            % arr[1]  
            % arr[2]  
            % arr[3]  
            % arr[4]  
         << endl;  
}  

3. ในคุณสมบัติโครงการ Visual Studio ของคุณตั้งค่าไดเรกทอรีรวมเพิ่มเติม:

คุณสมบัติโครงการ

สำหรับตัวอย่างง่ายๆ:

วิธีการติดตั้ง Boost Libraries ใน Visual Studio

หากคุณไม่ต้องการใช้ห้องสมุดเพิ่มทั้งหมดเพียงแค่ส่วนย่อย:

การใช้ส่วนย่อยของไลบรารีเพิ่มใน Windows

หากคุณต้องการเฉพาะตอนนี้เกี่ยวกับไลบรารีที่ต้องรวบรวม:

วิธีใช้ Boost compiled libraries ใน Windows


0

นอกจากนี้ยังมีบางสิ่งที่ฉันพบว่ามีประโยชน์มาก ใช้ตัวแปรสภาพแวดล้อมสำหรับเส้นทางเพิ่มของคุณ (วิธีการตั้งค่าตัวแปรสภาพแวดล้อมใน windows ลิงก์ที่ด้านล่างสำหรับ 7,8,10)ตัวแปร BOOST_ROOT ดูเหมือนจะเป็นสถานที่ทั่วไปอีกต่อไปและถูกตั้งค่าเป็นเส้นทางรากที่คุณเปิดเครื่องรูดเพิ่ม

จากนั้นในอสังหาริมทรัพย์, C ++ $(BOOST_ROOT)ทั่วไปเพิ่มเติมรวมถึงการใช้ไดเรกทอรี จากนั้นหาก / เมื่อคุณย้ายไปยังไลบรารีบูสต์รุ่นใหม่กว่าคุณสามารถอัปเดตตัวแปรสภาพแวดล้อมของคุณเพื่อให้ชี้ไปที่เวอร์ชันใหม่กว่านี้ ในฐานะที่เป็นโครงการของคุณให้ใช้การเพิ่มคุณจะไม่ต้องอัปเดต 'ไดเรกทอรีรวมเพิ่มเติม' สำหรับพวกเขาทั้งหมด

คุณสามารถสร้างตัวแปร BOOST_LIB และชี้ไปที่ตำแหน่งที่ libs ดังนั้นเช่นเดียวกันกับ Linker-> ไดเรกทอรีไลบรารีเพิ่มเติมคุณไม่จำเป็นต้องอัพเดตโครงการ ฉันมีของเก่าที่สร้างขึ้นด้วย vs10 และของใหม่ที่มี vs14 ดังนั้นฉันจึงสร้างทั้งสองรสชาติของ lib เพิ่มในโฟลเดอร์เดียวกัน ดังนั้นถ้าฉันย้ายโครงการจาก vs10 เป็น vs14 ฉันไม่จำเป็นต้องเปลี่ยนเส้นทางการเพิ่ม

หมายเหตุ: หากคุณเปลี่ยนตัวแปรสภาพแวดล้อมมันจะไม่สามารถทำงานในโครงการ VS แบบเปิดได้ทันใด VS โหลดตัวแปรเมื่อเริ่มต้น ดังนั้นคุณจะต้องปิด VS และเปิดใหม่อีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.