Programming

Visual Studio 2010에서 Boost를 사용하는 방법

procodes 2020. 2. 28. 19:35
반응형

Visual Studio 2010에서 Boost를 사용하는 방법


Visual Studio의 빈 프로젝트에서 Boost 라이브러리를 사용하는 방법에 대한 단계별 설명은 무엇입니까?


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.batb2.exe (이전의 이름은 bjam)를 빌드합니다.
  4. b2를 실행하십시오.

    • Win32 : b2 --toolset=msvc-10.0 --build-type=complete stage ;
    • x64 : 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.Regex ICU 지원

Boost.IOStreams Bzip2 필터 :

  1. 최신 버전의 bzip2 라이브러리 (작성 당시 1.0.6) 소스 파일을 선택한 디렉토리 (예 :)에 보관하십시오 C:\bzip2-1.0.6.
  2. 위의 두 번째 지침을 따라 부스트를 빌드하되 -sBZIP2_SOURCE="C:\bzip2-1.0.6"5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .

Boost.IOStreams Zlib 필터

  1. 최신 버전의 zlib 라이브러리 (1.2.5 작성 시점) 소스 파일을 선택한 디렉토리 (예 :)에 보관하십시오 C:\zlib-1.2.5.
  2. 위의 두 번째 지침을 따라 부스트를 빌드하되 -sZLIB_SOURCE="C:\zlib-1.2.5"5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .

Boost.MPI

  1. Microsoft Compute Cluster Pack과 같은 MPI 배포를 설치하십시오.
  2. 위의 두 번째 지침 세트에서 1-3 단계를 수행하여 부스트를 빌드하십시오.
  3. 부트 스트랩 실행 결과 project-config.jam디렉토리 에서 파일 편집하십시오 <BOOST_PATH>. 읽은 줄을 추가하십시오 using mpi ;( ';'앞의 공백에 유의하십시오).
  4. 위의 두 번째 지침 세트의 나머지 단계를 따라 부스트를 빌드하십시오. MPI 설치 자동 감지에 실패하면 적절한 빌드 파일을 찾아서 수정하여 올바른 위치에서 MPI를 찾으십시오.

부스트. 파이썬

  1. ActiveState의 ActivePython과 같은 Python 배포를 설치하십시오. Python 설치가 PATH에 있는지 확인하십시오.
  2. 라이브러리의 32 비트 버전을 완전히 빌드하려면 32 비트 Python이 필요하며 64 비트 버전과 유사합니다. 이러한 이유로 여러 버전이 설치되어 있으면 b2에게 특정 버전을 찾을 수있는 위치와 사용시기를 알려 주어야합니다. 이를 수행하는 한 가지 방법은 부트 스트랩 실행 결과 project-config.jam디렉토리 에서 파일을 편집하는 것 <BOOST_PATH>입니다. 다음 두 줄을 파이썬 설치 경로 및 버전에 맞게 조정하십시오 ( ';'앞의 공백에 유의하십시오).

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

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

    이러한 명시적인 Python 사양으로 인해 현재 MPI 빌드가 실패합니다. 따라서 MPI를 구축하는 경우 모든 것을 구축하려면 사양이 있거나없는 별도의 건물을 수행해야합니다.

  3. 위의 두 번째 지침을 따라 부스트를 빌드하십시오.

Boost.Regex ICU 지원

  1. 최신 버전의 ICU4C 라이브러리 (작성 시점 4.8) 소스 파일을 선택한 디렉토리 (예 :)에 보관하십시오 C:\icu4c-4_8.
  2. 에서 Visual Studio 솔루션을 엽니 다 <ICU_PATH>\source\allinone.
  3. 선택한 플랫폼에 대한 디버그 및 릴리스 구성을 위해 모두 빌드하십시오. 디버그 및 릴리스 빌드의 출력이 동일한 디렉토리 (기본 동작)에있을 때 Visual Studio 2010을 사용하여 ICU4C의 최신 릴리스를 빌드 하는 데 문제 가있을 수 있습니다 . 가능한 해결 방법은 모두 빌드 (디버그 빌드라고 함)를 수행 한 다음 두 번째 구성 (예 : 릴리스 빌드)에서 모두 다시 빌드를 수행하는 것입니다.
  4. x64 용으로 빌드하는 경우 빌드중인 64 비트 응용 프로그램 중 일부를 실행하는 빌드 후 단계가 있으므로 x64 OS를 실행해야합니다.
  5. 완료되면 소스 디렉토리를 제거하십시오 (선택 사항).
  6. 위의 두 번째 지침을 따라 부스트를 빌드하되 -sICU_PATH="C:\icu4c-4_8"5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .

Boost 웹 사이트 지침 이 도움이 되긴하지만 x64 라이브러리를 빌드하는 압축 버전이 있습니다.

  • 지침 페이지의 섹션 3언급 된 라이브러리 중 하나를 사용하는 경우에만이 작업을 수행하면됩니다 . 예를 들어 Boost.Filesystem을 사용하려면 컴파일이 필요합니다. 그 중 하나를 사용하지 않는 경우 압축을 풀고 이동하십시오.

32 비트 라이브러리 구축

그러면 아래에 Boost 헤더 파일이 설치되고 아래 C:\Boost\include\boost-(version)에 32 비트 라이브러리가 설치됩니다 C:\Boost\lib\i386. 라이브러리의 기본 위치 는 여러 아키텍처에 대해 빌드하려는 경우 디렉토리 C:\Boost\lib아래에 배치하는 것 i386입니다.

  1. Boost를 새 디렉토리에 압축 해제하십시오.
  2. 32 비트 MSVC 명령 프롬프트를 시작하고 Boost가 압축 해제 된 디렉토리로 변경하십시오.
  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\i386libs 경로에 추가 하십시오.

64 비트 라이브러리 구축

그러면 아래에 Boost 헤더 파일이 설치되고 아래 C:\Boost\include\boost-(version)에 64 비트 라이브러리가 설치됩니다 C:\Boost\lib\x64. 라이브러리의 기본 위치 는 여러 아키텍처에 대해 빌드하려는 경우 디렉토리 C:\Boost\lib아래에 배치하는 것 x64입니다.

  1. Boost를 새 디렉토리에 압축 해제하십시오.
  2. 64 비트 MSVC 명령 프롬프트를 시작하고 Boost가 압축 해제 된 디렉토리로 변경하십시오.
  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\x64libs 경로에 추가 하십시오.

-j % NUMBER_OF_PROCESSORS %를 모든 코어를 사용하는 인수로 시도 할 수도 있습니다. 쿼드 코어에서 일을 빠르게 처리합니다.


다음 트릭을 추천 할 수 있습니다 : 특수 boost.props파일 만들기

  1. 속성 관리자를 엽니 다
  2. 프로젝트 노드를 마우스 오른쪽 버튼으로 클릭하고 '새 프로젝트 속성 시트 추가'를 선택하십시오.
  3. 위치를 선택하고 속성 시트 이름을 지정하십시오 (예 : c : \ mystuff \ boost.props)
  4. 추가 Include 및 Lib 폴더를 검색 경로로 수정하십시오.

이 절차에는 boost가 명시 적으로 포함하려는 프로젝트에만 boost가 포함되어 있습니다. boost를 사용하는 새 프로젝트가 있으면 다음을 수행하십시오.

  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>은 적절한 디렉토리 (이 경우 D : \ boost_1_53_0 \ boost \ thread.hpp)에서 thread.hpp를 찾습니다. 'stage \ lib \'디렉토리는 설치된 디렉토리에 따라 변경 될 수 있습니다.

이 boost.props 파일은 D:\boost_1_53_0\디렉토리 에있을 수 있습니다 .


Boost의 어떤 부분이 필요합니까? 많은 것들이 Visual Studio와 함께 제공되는 TR1의 일부이므로 다음과 같이 간단히 말할 수 있습니다.

#include <tr1/memory>

using std::tr1::shared_ptr;

James에 따르면, 이것은 (C ++ 0x에서) 작동해야합니다.

#include <memory>

using std::shared_ptr;

이 스레드는 오래 전부터 사용되었으며 특정 하드웨어에서 가능한 한 빨리 Boost를 빌드하는 방법에 대해 뭔가 추가 할 것이라고 생각했습니다.

4 코어 또는 6 코어가있는 경우 각각 -j5 또는 -j7을 사용하십시오. 실제로 듀얼 코어가 없다면 표준 빌드 나 -j2가 아닙니다.

메인 스테이션에서 3930K (6 코어)의 클럭으로 Sandy Bridge Extreme을 실행하고 있지만 이전 백업 상자에는 2600k (4 코어)가 있으며, 추세는 N +로 최고의 Boost 컴파일 시간을 얻는 것입니다. 여기서 N은 물리적 코어의 수입니다. N + 2는 수익이 감소하는 시점에 도달하고 시간이 증가합니다.

참고 : 하이퍼 스레딩, 32GB RAM DDR3, Samsung 840 EVO SSD가 활성화되었습니다.

6 코어의 -j7 (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

6 코어의 -j6 (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

6 코어의 -j8 (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

6 코어의 -j7 빌드

구성

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 비트 빌드는 시간이 조금 더 걸린다는 점에 유의하십시오. 그들과 동일한 비교를 수행하고 업데이트해야합니다.


또한 약간의 참고 사항 : 컴파일 시간을 줄이려면 플래그를 추가 할 수 있습니다

-j2

동시에 두 개의 병렬 빌드를 실행합니다. 이로 인해 하나의 영화를 볼 수 있습니다.)


http://www.boost.org/users/download/ 에서 부스트 다운로드 : 예 : svn

  • Windows-> 거북이 (가장 간단한 방법)

그 후 : cmd-> 부스트 디렉토리로 이동하십시오 ( "D : \ boostTrunk"-패키지를 체크 아웃하거나 다운로드하여 압축을 풉니 다) : 명령 : bootstrap

우리는 ( "D : \ boostTrunk")에 bjam.exe를 만들었습니다. 그 후 : command : bjam toolset = msvc-10.0 variant = debug, release threading = 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


다음은 Boost를 사용하는 방법입니다.

  1. Boost 라이브러리의 zip 버전을 다운로드하여 추출하십시오.
  2. bootstrap.bat 파일을 실행 한 다음 bjam.exe를 실행하십시오.
  3. 약 30 분 정도 기다리십시오.
  4. Visual Studio에서 새 프로젝트를 만듭니다.
  5. 이동 프로젝트 -> 속성 -> 링커 -> 일반 -> 추가 라이브러리 디렉토리 및 추가 부스트 / 무대 / lib 디렉토리의 그것에 디렉토리.
  6. 이동 프로젝트 -> 속성 -> C / C ++ -> 일반 -> 추가 포함 디렉터리 및 추가 부스트 그것에 디렉토리.

오류없이 프로젝트를 빌드 할 수 있습니다!


여기에 있는 Windows 설치 프로그램이 완벽하게 작동했습니다. 다음 단계를 수행했습니다.

  1. 완료 될 때까지 설치 마법사를 따르십시오.
  2. Visual Studio를 실행하십시오.
  3. 새로운 C ++ 프로젝트 만들기
  4. 프로젝트 속성 열기 (솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하여 찾을 수 있음)
  5. "C / C ++> 일반> 추가 포함 디렉토리"에서 boost root 디렉토리의 경로를 추가하십시오. 내 버전의 기본값은 C : \ local \ boost_1_63_0입니다. "boost"뒤의 숫자는 boost의 버전입니다.
  6. 프로젝트 특성의 "링커> 추가 라이브러리 디렉토리"에서 라이브러리 파일의 디렉토리를 추가하십시오. 내 버전의 기본값은 C : \ local \ boost_1_63_0 \ lib64-msvc-14.0입니다. "lib"뒤의 숫자는 빌드 대상 (Visual Studio에서 32 비트 또는 64 비트)과 관련이 있고 "msvc"뒤의 숫자는 Visual Studio 버전과 관련이 있습니다 (14.0은 Visual Studio 2015와 관련이 있지만 저는 2017 Visual Studio에서 사용).

행운을 빕니다!


KTC의 매우 유익한 주요 답변에 대한 작은 추가 사항 :

무료 Visual Studio c ++ 2010 Express를 사용하고 64 비트 바이너리를 컴파일하고 64 비트 버전의 Boost 라이브러리를 사용하려면 32 비트로 끝납니다. 비트 라이브러리 (마일리지는 물론 다를 수 있지만 내 컴퓨터에서는 슬픈 경우입니다).

다음을 사용하여이 문제를 해결할 수 있습니다.

  1. 32 비트 MSVC 명령 프롬프트를 시작하고 Boost가 압축 해제 된 디렉토리로 변경하십시오.
  2. 실행 : 부트 스트랩

환경을 설정하기 위해 'setenv'에 대한 호출을 삽입했습니다. 릴리스 빌드의 경우 위 단계는 다음과 같습니다.

  1. 32 비트 MSVC 명령 프롬프트를 시작하고 Boost가 압축 해제 된 디렉토리로 변경하십시오.
  2. "C : \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ setenv.cmd"/ Release / x64를 실행합니다.
  3. 실행 : 부트 스트랩

나는이 정보를 여기에서 발견했다 : http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html


Visual Studio에서 시작할 수있는 최소한의 예 :

1. 여기에서 Boost를 다운로드 하고 압축을 풉니 다.

별도의 컴파일이 필요하지 않은 예제 라이브러리를 사용하여 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 프로젝트 속성에서 추가 포함 디렉토리를 설정하십시오.

프로젝트 속성

매우 간단한 예를 들면 다음과 같습니다.

How to Install the Boost Libraries in Visual Studio

If you don't want to use the entire boost library, just a subset:

Using a subset of the boost libraries in Windows

If you specifically want to now about the libraries that require compilation:

How to use the Boost compiled libraries in Windows


In addition, there is something I find very useful. Use environment variables for your boost paths. (How to set environment variables in windows, link at bottom for 7,8,10) The BOOST_ROOT variable seems to be common place anymore and is set to the root path where you unzip boost.

Then in Properties, c++, general, Additional Include Directories use $(BOOST_ROOT). Then if/when you move to a newer version of the boost library you can update your environment variable to point to this newer version. As more of your projects, use boost you will not have to update the 'Additional Include Directories' for all of them.

You may also create a BOOST_LIB variable and point it to where the libs are staged. So likewise for the Linker->Additional Library Directories, you won't have to update projects. I have some old stuff built with vs10 and new stuff with vs14 so built both flavors of the boost lib to the same folder. So if I move a project from vs10 to vs14 I don't have to change the boost paths.

참고 : 환경 변수를 변경하면 열린 VS 프로젝트에서 갑자기 작동하지 않습니다. VS는 시작시 변수를로드합니다. 따라서 VS를 닫았다가 다시 열어야합니다.

참고 URL : https://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010



반응형