Странности в линковке Boost
От: x-code  
Дата: 07.10.20 18:45
Оценка:
Скачал новый буст 1.74, собрал его с помощью msvc 2019
из Developer Command Prompt for VS 2019
bootstrap.bat
b2 link=static toolset=msvc-19.20

прописал пути к инклудам и либам, пробую собрать пример, а он выдает
Error LNK1104 cannot open file 'libboost_context-vc142-mt-gd-x32-1_74.lib'
В папке stage все библиотеки имеют корректные суффиксы, соответствующие vs2019 version 16.0.0:
-vc1920-mt-gd-x32-1_74.lib
-vc1920-mt-gd-x64-1_74.lib
-vc1920-mt-x32-1_74.lib
-vc1920-mt-x64-1_74.lib

Полез смотреть как этот суффикс формируется, оказалось что в файле boost/config/auto_link.hpp не предусмотрены студии новее vc142!
Пришлось вручную прописать в C++/Preprocessor строку BOOST_LIB_TOOLSET="vc1920"; после этого все слинковалось.
Но не может же быть чтобы вот так по-дурацки все было устроено, при том что раньше все автоматически работало?
Возможно я все-же где-то неправ?
Re: Странности в линковке Boost
От: Gaia  
Дата: 12.10.20 10:41
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Но не может же быть чтобы вот так по-дурацки все было устроено, при том что раньше все автоматически работало?

XC>Возможно я все-же где-то неправ?

Не может. Потому что vc142 — это не версия Visual Studio, а версия студийного с++ toolset'а
Который, в данном случае, родной для VS 2019 (с компилятором версии 19.2х)

Поэтому не надо было править auto_link, а надо было собирать с --toolset=msvc-14.2
Отредактировано 12.10.2020 10:47 Gaia . Предыдущая версия .
Re[2]: Странности в линковке Boost
От: x-code  
Дата: 14.10.20 10:16
Оценка:
Здравствуйте, Gaia, Вы писали:

G>Не может. Потому что vc142 — это не версия Visual Studio, а версия студийного с++ toolset'а

G>Который, в данном случае, родной для VS 2019 (с компилятором версии 19.2х)

G>Поэтому не надо было править auto_link, а надо было собирать с --toolset=msvc-14.2


А где взять версию тулсета?
Я написал простейшую программу, в которой вывел на консоль значение _MSC_VER, будучи уверенным что это она и есть.
Получилось 1920
Re[3]: Странности в линковке Boost
От: Gaia  
Дата: 14.10.20 17:27
Оценка:
Здравствуйте, x-code, Вы писали:

XC>А где взять версию тулсета?


У 2019 штатный — это 14.2, у 2017 — 14.1
Фигурирует в пути к используемому cl.exe Например, сейчас: (... \VC\Tools\MSVC\14.27.29110\bin\Hostx64\x86)
Какие еще есть можно посмотреть в списке установленных компонент в инсталляторе. И доставить младшие по необходимости
Ну или так:


При сборке можно указать --toolset=msvc, и будет использован максимальный, какой найдется

В auto_link.hpp уже все предусмотрено: (BOOST_MSVC == _MSC_VER)
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920)

     // vc14.1:
#    define BOOST_LIB_TOOLSET "vc141"

#  elif defined(BOOST_MSVC)

     // vc14.2:
#    define BOOST_LIB_TOOLSET "vc142"
Отредактировано 14.10.2020 17:34 Gaia . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.