Использование немодульной библиотеки в качестве модуля в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование немодульной библиотеки в качестве модуля в C++

Сообщение Anonymous »

Я задал здесь аналогичный вопрос по этому поводу, и ответ заключался в том, что, если библиотека не была создана с конкретным намерением использовать ее в качестве модуля, то это невозможно без изменения исходного кода библиотеки. Аналогично, ответ на аналогичный вопрос здесь предполагает, что для того, чтобы библиотеку можно было использовать в качестве модуля, фактическая библиотека должна содержать макросы, которые различают, когда она используется как библиотека только для заголовков или как модуль, а именно введение ключевого слова экспорта. И поэтому я отказался от попыток попробовать это.
Однако недавно мне стал известен один метод, и я был весьма удивлен, что он сработал. Сначала создайте модуль и сделайте следующее:

Код: Выделить всё

module;
#include "glm/glm.hpp"

export module glm_module;

export namespace glm
{
using glm::vec2;
using glm::vec3;
}
А затем, когда вам нужно будет его использовать, просто выполните:

Код: Выделить всё

import glm_module;

int main()
{
glm::vec2 myvec2; // simply use them now.
glm::vec3 myvec3;

}
И это просто работает с компилятором Clang. Это кажется настолько простым и универсальным, что, кажется, может работать практически с любой библиотекой. Мне интересно, так ли это, а также является ли этот метод кроссплатформенным и поддерживается ли несколькими компиляторами/цепочками инструментов.

Подробнее здесь: https://stackoverflow.com/questions/798 ... odule-in-c
Ответить

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

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

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

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

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