Я пытаюсь скомпилировать WebRT C, но поскольку мы используем несколько библиотек, некоторые из которых являются закрытым исходным кодом и находятся вне нашего контроля, то как его компилировать, довольно чувствительно для соответствия. Мне уже приходилось редактировать скрипт build/config/win/BUILD.gn
, чтобы использовать флаги сборки /MDd
и /MD
вместо /MTd
и /MT
соответственно, так как мы используем многопоточную среду выполнения DLL. Для компоновки мы запускаем
gn gen out/Debug --args="is_debug=true is_clang=false use_lld=false visual_studio_version=2019"
ninja -C out/Debug
Однако при связывании с webrt c .lib происходит сбой с множественными ошибками, ссылающимися на несоответствие между _ITERATOR_DEBUG_LEVEL
. Я много видел эту ошибку, она возникает при связывании библиотеки, собранной с релиза (_ITERATOR_DEBUG_LEVEL=2
), с исполняемым файлом отладки (_ITERATOR_DEBUG_LEVEL=0
). Однако это явно не то, как я это скомпилировал. Я попытался добавить /DEBUG
(что подразумевается под /MDd
, насколько я знаю), но он создает идентичную библиотеку с той же проблемой. Я подтвердил проверку сгенерированных скриптов .ninja, что эти аргументы находятся в cflags
.
Есть ли способ заставить ниндзя правильно наблюдать флаги отладки?