Не могу импортировать субмодуль
На 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
как временное решение.