64-bitowa wersja Boost dla 64-bitowych okien

119

Czy istnieje wersja 64-bitowej biblioteki Boost dla VS2008? Czy też muszę samemu skompilować? jeśli tak, to czy ktoś ma z tym doświadczenie?

ra170
źródło

Odpowiedzi:

226

Krótko mówiąc:

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete

Jako dłuższą odpowiedź, oto moje uwagi dotyczące kompilacji dotyczące posiadania 32-bitowych i 64-bitowych bibliotek zwiększających VS .NET 2008 w tej samej hierarchii (co, jak podejrzewam, jest częstym przypadkiem użycia):

  1. Zbuduj pliki binarne win32

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. Utwórz katalog lib \ win32

  3. Przenieś zawartość stage \ lib do lib \ win32
  4. Usuń katalogi bin.v2 i stage
  5. Zbuduj pliki binarne x64

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
  6. Utwórz katalog lib \ x64

  7. Przenieś zawartość stage \ lib do lib \ x64
  8. Usuń katalogi bin.v2 i stage
Adrian Conlon
źródło
25
Możesz również określić katalog stage, co eliminuje potrzebę kopiowania wynikowych bibliotek wokół: bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser
8
co to jest scena ?
Ramadheer Singh
16
Niestety w przypadku kompilacji 64 nie działa address-model = 64. Musisz mieć ścieżkę wskazującą na Visual Studio \ bin \ amd64 \ cl.exe. W przeciwnym razie tworzy wersję 32-bitową. Aby to zrobić, możesz uruchomić wiersz polecenia Microsoft SDK i użyć „setenv / Release / x64”, który przedefiniuje wszystkie ścieżki.
Budric
2
@Budric, czy na pewno? Wydaje się, że pracował dla mnie i to wyraźnie wskazuje, aby podać ścieżkę do 32 bitowego kompilatora nawet podczas budowy w 64-bitowym.
Maciej Gryka
4
Jeśli potrzebujesz zbudować zarówno wersję 32-bitową, jak i 64-bitową, można również użyć parametru stagedir: "bjam --stagedir =. / Lib_64bit address-model = 64 toolset = msvc threading = multi" i "bjam --stagedir =. / lib toolset = msvc threading = multi "
Odin,
63

Mam wbudowane pliki binarne na mojej stronie: http://boost.teeks99.com

Edytuj 2013-05-13: Moje kompilacje są teraz dostępne (począwszy od 1.53) bezpośrednio ze strony sourceforge .

teeks99
źródło
5
Świetnie, że to zapewniasz, ponieważ BoostPRo (który dostarcza pliki binarne dla bibliotek Boost) nie udostępnia wersji x64. Dzięki!
CharlesB,
Jest jakaś szansa, że ​​możesz opublikować pliki binarne VS2015 (VC ++ 14)? Byłoby to bardzo mile widziane.
Russell Greene
1
Pliki binarne msvc-14.0 będą dostępne w wersji 1.59, która ma się ukazać za kilka tygodni.
teeks99
22

UPDATE (19.09.2017): dodano wiersze skryptu dla VS2017. Należy pamiętać, że Boost obsługuje kompilator VS2017 od określonej powyżej wersji. Użyłem najnowszej wersji (1.65.1).

Użyłem tych skryptów do budowania przyspieszenia dla platform x64 i x86, lib i dll, debugowania i wydania dla VS2017, VS2015 i VS2013:

md stage\VS2017\x64
md stage\VS2015\x64
md stage\VS2013\x64    

b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release  

b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release


md stage\VS2017\win32
md stage\VS2015\win32
md stage\VS2013\win32

b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release

pause

Możesz utworzyć .batplik i uruchomić go w celu zbudowania plików binarnych boost.

mtb
źródło
12

W tej chwili 64-bitowe pliki binarne dostarczone przez teeks99 (zobacz inną odpowiedź) wydają się być jedynymi dostępnymi 64-bitowymi plikami binarnymi. Przez pewien czas BoostPro zapewniał również 64-bitowe pliki binarne, ale od 1.51 wydają się być niedostępne lub biznesowe.

Wracamy więc do dwóch opcji: binarne teeks99 lub tworzenie własnych.

Większość informacji potrzebnych mi do zbudowania własnej znajdowała się tutaj: https://stackoverflow.com/a/2655683/613288

Brakowało tylko tego, jak sprawić, by działało z bezpłatną wersją programu Visual Studio 2010 Express. Znalazłem tę brakującą część gdzie indziej i po pewnym dostosowaniu ostateczny przepis, którego użyłem do mojej kompilacji plików binarnych doładowania 1.49.0, brzmiał:

Uruchom program Visual C ++ iz menu Narzędzia uruchom wiersz polecenia programu Visual Studio.

W oknie konsoli wykonaj następujące czynności:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd"  /Release  /x64

a następnie w katalogu boost:

bootstrap.bat
b2  -a  -sBZIP2_SOURCE="C:\bzip2-1.0.6"   -sZLIB_SOURCE="C:\zlib-1.2.5"   --toolset=msvc-10.0  architecture=x86  address-model=64  link=static  --with-date_time  --with-filesystem  --with-serialization  --with-test  --with-thread  --with-system  --with-regex  --with-iostreams  stage

Ostatnie polecenie jest dostosowane do tego, czego potrzebowałem (tylko niektóre biblioteki połączone statycznie).

ekotax
źródło
Ściągnąłem ich instalator x64 1_51, jednak zawiera on uszkodzone archiwum biblioteki systemowej i wygląda na to, że niektóre inne biblioteki to x86 (otrzymuję ostrzeżenia dotyczące linkera). Po przejściu na biblioteki teeks99 wszystko stało się OK.
Alex
4

Zrobiłem dla mnie mały skrypt, który kompiluje je wszystkie dla VS2005 i VS2008:

md stage\lib\win32
md stage\lib\x64

REM Visual Studio 2005
bjam --toolset=msvc-8.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\

REM Visual Studio 2008
bjam --toolset=msvc-9.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\
Harald Krause
źródło