Здравствуйте, 3m-soft, Вы писали:
3S>Два вечера попыток прикрутить Clang к Visual Studio 2017 не принесли положительного результата:
3S>Вариант №1: Установил Clang/C2 (experimental) из установщика студии. Результат: обламывается компиляция STL. В STL прямо в коде прописана проверка версии шланга и требуется более новая версия.
Да, в последних версиях работа со встроенным
clang'ом немного поломалась (но все еще возможна при желании).
Чтобы избежать проверки версии
clang в стандартной библиотеке,
надо определить макрос _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH (например, в настройках проекта:
C/C++ → Preprocessor → Preprocessor Definitions).
Также для нормальной компиляции кода
clang'ом необходим следующий код перед включением некоторых заголовочных файлов стандартной библиотеки (его разумно разместить в precompiled header):
#if defined(__clang__)
// workaround for bug in Clang with Microsoft Codegen
#define __is_trivially_destructible(arg) __has_trivial_destructor(arg)
#endif
Здравствуйте, Constructor, Вы писали:
C>Здравствуйте, 3m-soft, Вы писали:
3S>>Два вечера попыток прикрутить Clang к Visual Studio 2017 не принесли положительного результата:
3S>>Вариант №1: Установил Clang/C2 (experimental) из установщика студии. Результат: обламывается компиляция STL. В STL прямо в коде прописана проверка версии шланга и требуется более новая версия.
C>Да, в последних версиях работа со встроенным clang'ом немного поломалась (но все еще возможна при желании).
C>Чтобы избежать проверки версии clang в стандартной библиотеке, надо определить макрос _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH (например, в настройках проекта: C/C++ → Preprocessor → Preprocessor Definitions).
C>Также для нормальной компиляции кода clang'ом необходим следующий код перед включением некоторых заголовочных файлов стандартной библиотеки (его разумно разместить в precompiled header):
C>C>#if defined(__clang__)
C>// workaround for bug in Clang with Microsoft Codegen
C>#define __is_trivially_destructible(arg) __has_trivial_destructor(arg)
C>#endif
C>
Да, по коду я видел, что можно определить этот макрос. Только мне смысла нет бороться за этот вариант. Мне нужен C++17, а встроенный Clang его не поддерживает.