Не могу импортировать субмодуль

На clang version 6.0.0 (tags/RELEASE_600/final) Не могу импортировать std субмодули как std.vector, Все import std работает нормально, но import std.vector не. я использую libc++ Карта модуля, которая правильно определяет этот модуль.

редактировать

Та же проблема существует с пользовательской картой модулей

module test {
  explicit module sub {
    header "test.hpp"
    export *
  }
}

Не может загрузить модуль test.sub но сообщает, что символ foo можно найти в нем.

Редактировать 2

clang 5.0.2 ведет себя так же.

Редактировать 3

6.0.1-rc1 так же

Есть ли какие-либо проблемы, связанные с этим или сведения о том, что он еще не поддерживается?

1 ответ

Для импортных модулей или субмодулей clang 6 не везде работает идеально, clang 7 будет улучшен в будущем.

Вы можете попробовать установить -fmodules-cache-path=<your-cache-path> явно помечать, и вы можете видеть, что, если в сборке участвует какой-то модуль, clang будет заполнять предварительно скомпилированные файлы модуля (обычно *.pcm) к нему, когда он строит.

В документации на Clang 7 вы можете попрактиковаться в Языке карт модулей, чтобы создавать свои собственные модули, включающие некоторые заголовки и экспортировать их, а затем импортировать свои собственные модули. Как описано в документации, сейчас она не стабильна. Вам нужно попробовать.

По крайней мере, на данный момент вы можете использовать import std как временное решение.

Другие вопросы по тегам