Фон
Создание заголовков экспорта создает dllimport/export и эквивалентный явный экспорт/импорт для GCC. Однако, в отличие от MSVC, GCC и Clang поддерживают модификаторы видимости в функциях шаблона. Очевидно, это имеет реальные последствия. И вслед за Крейгом Скоттом он категорически подразумевает, что следует использовать экспорт и для встроенных файлов, это обсуждается через https://cmake.org/cmake/help/latest/mod ... eader.html, где оба рекомендуют использовать переменные.
set (CMAKE_CXX_VISIBILITY_PRESET скрыт) установить (CMAKE_VISIBILITY_INLINES_HIDDEN 1) в верхней части файла CMakeLists.txt. Проблема в том, что MSVC, похоже, не поддерживает семантику экспорта/импорта DLL в функциях и классах шаблона.
Вопрос
Как же мне свести к минимуму эти два несовместимых требования? Лучшей практикой является установка скрытых встроенных строк, и хотя это влияет только на GCC и CLang, это означает, что экспорт необходим, чтобы сделать эти символы видимыми, верно? Но поскольку это не поддерживается MSVC, я не могу использовать экспорт этих символов кросс-платформенным способом, верно?