Кросс-платформенное использование CMakegenerate_export_headers и встроенных функций шаблона.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Кросс-платформенное использование CMakegenerate_export_headers и встроенных функций шаблона.

Сообщение Anonymous »

Фон
Создание заголовков экспорта создает 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, я не могу использовать экспорт этих символов кросс-платформенным способом, верно?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»