Как создать boost с помощью «Пропустить имя библиотеки по умолчанию» и Visual C ++? - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать статическую библиотеку Boost, которая не будет зависеть от версии проекта (MT или MD).Единственное, что требуется для создания такой библиотеки, - это добавить в командную строку параметр /Zl.

Я отредактировал tools/build/src/user-config.jam и указать здесь флаги компилятора:

using msvc : : : <cxxflags>/Zl ;

Когда я открываю rsp файлы генерируются системой Boost, я вижу флаг /Zl здесь, например, в regex.obj.rsp:

"libs\regex\build\..\src\regex.cpp" -Fo"bin.v2\libs\regex\build\msvc-14.1\release\address-model-64\link-static\runtime-link-static\threading-multi\regex.obj"    -TP /O2 /Ob2 /W4 /GR /MT /Zc:forScope /Zc:wchar_t /favor:blend /wd4675 /EHs /Zl -c 
-DBOOST_ALL_NO_LIB=1 
-DNDEBUG 
"-I."

Итак, для меня это выглядит так, как будто полученная библиотека может связывать и / MD, и /гораОднако это не так:

libboost_regex.lib(regex.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease'

Этот трюк (с /Zl) работает для меня с zlib, openssl, libcurl, libsqlite3 и многими другими библиотеками;Может кто-нибудь объяснить, почему он не работает с boost?Может ли boost каким-либо образом переопределить параметр /Zl, даже если он существует в файле rsp и в user-config.jam, или почему библиотекам boost требуется та же версия времени выполнения, даже если параметр /Zl должен делать его независимым от времени выполнения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...