답변:
Nate의 대답 은 이미 훌륭 하지만 요청에 따라 Visual Studio 2010에 대해 더 구체적으로 확장하고 외부 라이브러리가 필요한 다양한 선택적 구성 요소에서 컴파일하는 방법에 대한 정보를 포함시킬 것입니다.
헤더 전용 라이브러리를 사용하는 경우 부스트 다운로드를 아카이브 해제하고 환경 변수를 설정하기 만하면됩니다. 아래 지침은 Visual Studio에 대해서만 환경 변수를 설정하며 전체 시스템에는 적용되지 않습니다. 한 번만 수행하면됩니다.
C:\boost_1_47_0
.Microsoft.Cpp.<Platform>.user
하고을 선택 Properties
하여 편집 할 속성 페이지를 엽니 다.VC++ Directories
왼쪽에서 선택하십시오 .Include Directories
부스트 소스 파일의 경로를 포함 하도록 섹션을 편집하십시오 .빌드가 필요한 부스트 부분을 사용하고 있지만 외부 종속성이 필요하지 않은 기능을 사용하지 않으려면 매우 간단합니다.
C:\boost_1_47_0
.bootstrap.bat
b2.exe (이전의 이름은 bjam)를 빌드합니다.b2를 실행하십시오.
b2 --toolset=msvc-10.0 --build-type=complete stage
; b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
산책하러 가거나 영화를 보거나 2 / ....
Library Directories
부스트 라이브러리 출력 경로를 포함 하도록 섹션을 편집하십시오 . (위의 예제와 지침의 기본값은입니다 C:\boost_1_47_0\stage\lib
. x86 & x64를 나란히 (예 : <BOOST_PATH>\lib\x86
& <BOOST_PATH>\lib\x64
) 사용 하려면 디렉토리 이름을 바꾸고 먼저 디렉토리를 이동하십시오 .선택적 구성 요소를 원하면 더 많은 작업이 필요합니다. 이것들은:
Boost.IOStreams Bzip2 필터 :
C:\bzip2-1.0.6
.-sBZIP2_SOURCE="C:\bzip2-1.0.6"
5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .Boost.IOStreams Zlib 필터
C:\zlib-1.2.5
.-sZLIB_SOURCE="C:\zlib-1.2.5"
5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .Boost.MPI
project-config.jam
디렉토리 에서 파일 을 편집하십시오 <BOOST_PATH>
. 읽은 줄을 추가하십시오 using mpi ;
( ';'앞의 공백에 유의하십시오).부스트. 파이썬
라이브러리의 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를 구축하는 경우 모든 것을 구축하려면 사양이 있거나없는 별도의 건물을 수행해야합니다.
위의 두 번째 지침을 따라 부스트를 빌드하십시오.
Boost.Regex ICU 지원
C:\icu4c-4_8
.<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
5 단계에서 b2를 실행할 때 옵션을 추가하십시오 .Boost 웹 사이트 의 지침 이 도움이되지만 x64 라이브러리를 빌드하는 압축 버전이 있습니다.
그러면 아래에 Boost 헤더 파일이 설치되고 아래 C:\Boost\include\boost-(version)
에 32 비트 라이브러리가 설치됩니다 C:\Boost\lib\i386
. 라이브러리의 기본 위치 는 여러 아키텍처에 대해 빌드하려는 경우 디렉토리 C:\Boost\lib
아래에 배치하는 것 i386
입니다.
bootstrap
운영: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
C:\Boost\include\boost-(version)
포함 경로에 추가 하십시오.
C:\Boost\lib\i386
libs 경로에 추가 하십시오.그러면 아래에 Boost 헤더 파일이 설치되고 아래 C:\Boost\include\boost-(version)
에 64 비트 라이브러리가 설치됩니다 C:\Boost\lib\x64
. 라이브러리의 기본 위치 는 여러 아키텍처에 대해 빌드하려는 경우 디렉토리 C:\Boost\lib
아래에 배치하는 것 x64
입니다.
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
포함 경로에 추가 하십시오.C:\Boost\lib\x64
libs 경로에 추가 하십시오.-j % NUMBER_OF_PROCESSORS %를 모든 코어를 사용하는 인수로 시도 할 수도 있습니다. 쿼드 코어에서 일을 빠르게 처리합니다.
다음 트릭을 추천 할 수 있습니다 : 특수 boost.props
파일 만들기
이 절차에는 boost가 명시 적으로 포함하려는 프로젝트에만 boost가 포함되어 있습니다. boost를 사용하는 새 프로젝트가 있으면 다음을 수행하십시오.
편집 (@ 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\
디렉토리 에있을 수 있습니다 .
Boost의 어떤 부분이 필요합니까? 많은 것들이 Visual Studio와 함께 제공되는 TR1의 일부이므로 다음과 같이 간단히 말할 수 있습니다.
#include <tr1/memory>
using std::tr1::shared_ptr;
James에 따르면, 이것은 (C ++ 0x에서) 작동해야합니다.
#include <memory>
using std::shared_ptr;
std
C ++ 0x 표준과 마찬가지로 네임 스페이스 로 이동되었습니다 . ( std::tr1
이전 버전과의 호환성을 위해 네임 스페이스 에 있다고 생각합니다 ).
이 스레드는 오래 전부터 사용되었으며 특정 하드웨어에서 가능한 한 빨리 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
구성
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 비트 빌드는 시간이 조금 더 걸린다는 점에 유의하십시오. 그들과 동일한 비교를 수행하고 업데이트해야합니다.
http://www.boost.org/users/download/ 에서 부스트 다운로드 : 예 : svn
그 후 : cmd-> 부스트 디렉토리로 이동하십시오 ( "D : \ boostTrunk"-패키지를 체크 아웃하거나 다운로드 및 추출하십시오) : command : bootstrap
우리는 ( "D : \ boostTrunk")에 bjam.exe를 만들었습니다. 그 후 : command : bjam toolset = msvc-10.0 variant = debug, release threading = multi link = static (약 20 분 정도 소요됩니다.)
그 후 : Visual Studio 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;
}
다음은 Boost를 사용하는 방법입니다.
오류없이 프로젝트를 빌드 할 수 있습니다!
여기에 있는 Windows 설치 프로그램이 완벽하게 작동했습니다. 다음 단계를 수행했습니다.
행운을 빕니다!
KTC의 매우 유익한 주요 답변에 대한 간단한 추가 사항 :
무료 Visual Studio c ++ 2010 Express를 사용하고 64 비트 바이너리를 컴파일하고 64 비트 버전의 Boost 라이브러리를 사용하려면 32 비트로 끝납니다. 비트 라이브러리 (마일리지는 물론 다를 수 있지만 내 컴퓨터에서는 슬픈 경우입니다).
다음을 사용하여이 문제를 해결할 수 있습니다.
환경을 설정하기 위해 'setenv'에 대한 호출을 삽입했습니다. 릴리스 빌드의 경우 위 단계는 다음과 같습니다.
나는이 정보를 여기에서 발견했다 : 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 프로젝트 속성에서 추가 포함 디렉토리를 설정하십시오.
매우 간단한 예를 들면 다음과 같습니다.
Visual Studio에서 Boost 라이브러리를 설치하는 방법
전체 부스트 라이브러리를 사용하지 않으려면 하위 집합 만 사용하십시오.
컴파일이 필요한 라이브러리에 대해 구체적으로 알고 싶은 경우 :
또한, 내가 매우 유용하다고 생각하는 것이 있습니다. 부스트 경로에 환경 변수를 사용하십시오. (창에서 환경 변수를 설정하는 방법, 7,8,10의 하단에 링크) BOOST_ROOT 변수는 더 이상 일반적인 것으로 보이며 압축을 풀 때 루트 경로로 설정됩니다.
그런 다음 속성, c ++, 일반에서 추가 포함 디렉토리 사용 $(BOOST_ROOT)
됩니다. 그런 다음 최신 버전의 부스트 라이브러리로 옮길 때이 새로운 버전을 가리 키도록 환경 변수를 업데이트 할 수 있습니다. 프로젝트가 많을수록 향상을 사용하면 모든 프로젝트에 대해 '추가 포함 디렉토리'를 업데이트 할 필요가 없습니다.
BOOST_LIB 변수를 작성하여 라이브러리가 스테이징되는 위치를 가리킬 수도 있습니다. 따라서 링커-> 추가 라이브러리 디렉토리의 경우 프로젝트를 업데이트 할 필요가 없습니다. vs10으로 작성된 오래된 것들과 vs14로 새로운 것들이 있으므로 boost lib의 두 가지 특징을 동일한 폴더에 구축했습니다. 따라서 프로젝트를 vs10에서 vs14로 옮기면 부스트 경로를 변경할 필요가 없습니다.
참고 : 환경 변수를 변경하면 열린 VS 프로젝트에서 갑자기 작동하지 않습니다. VS는 시작시 변수를로드합니다. 따라서 VS를 닫았다가 다시 열어야합니다.