Модуль C ++ "не удалось прочитать модуль 'std.io.gcm': такого файла или каталога нет" - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь протестировать модуль c ++ с помощью образа докера

docker pull benboeckel/cxx-modules-sandbox:latest
docker run -it image_id


sh-4.4$ g++ --version
g++ (GCC) 9.0.1 20190301 (experimental) [c++-modules:20190305-1618]

Затем создайте тестовый файл.

import std.io;

int main()
{
    return 0;
}

Я получил следующую ошибку:

sh-4.4 $ g ++ -o m main.cpp -std = c ++ 2a -fmodules-ts В импортированном модуле at main.cpp: 1: 1: std.io: ошибка: не удалось прочитать модуль 'std.io.gcm': нет такой файл или каталог std.io: фатальная ошибка: спрыгнуть с ума поезд до крашвилльского сборника прекращен.

Обновление:

Следующий код работает нормально.

//m.cpp
export module M;
export int sq(int i) { return i*i; }

//main.cpp
import M;
int main() { return sq(9); }

g++  -o m main.cpp m.cpp -std=c++2a -fmodules-ts

1 Ответ

2 голосов
/ 09 марта 2019

Модули добавлены в черновик C ++ 20, но это не означает, что стандартная библиотека теперь является модульной. Есть попытки его модульно , но у нас пока нет ничего конкретного:

Несмотря на то, что мы, похоже, достигли консенсуса в отношении дизайна для функции языка модулей, наш план того, как и когда стандартная библиотека C ++ будет модульной, еще не настолько развит. Были сделаны некоторые предложения ( [P0581R1] и [P1212R0] ), и были проведены предварительные обсуждения ( [2018-Джексонвилл-LEWG-P0581R0-Минуты] и [2018-Сан-Диего-EWG-P1212R0-Минуты] ), но мы еще не выбрали путь. Учитывая, что цикл C ++ 20 почти закончен, нам пора принять решение о нашей стратегии для стандартных библиотечных модулей в C ++ 20.

...