Comments 15
MSVS как IDE пока откровенно хреново с модулями работает, это да. Вот собственно компилятор мелкомягкий уже переваривает их более-менее нормально.
Сами же модули, как они введены стандартом, лично мне не понравились: переусложнено, запутано, чревато ошибками... Как по мне, лучше было бы вводить модули в стиле Ады.
IDE от них быстро плохеет: то одно криво, то другое.
intellisense пока экспериментальный и кривой. когда его доделают — не понятно.
а еще после перевода небольшого проекта на модули у меня скорость сборки упала.
Упала по сравнению с precompiled headers?
Ну вообще несколько странно. По идее инкрементальная сборка должна была ускориться.
Ну а теперь сравниваем этот зоопарк с Rust + rust-analyzer.
Перевод статьи двухлетней давности по модулям...
Де́ржите планку.
В текущей версии GCC у модулей большая проблема с шаблонами - при попытке подключить модули и одновременно использовать заголовки QT появляется куча конфликтов с пространством имён.
Похоже, стандарт сильно недоработан/недодуман в этом вопросе.
На улице уж середина 2023 года, а я так и не видел модулей в продакшен.... да я их ввобще не видел. Думал может "import std" исправит ситуцию, но что то я сомневаюсь.
Странно однако, что в заметке упомянуты Java, где никакой модульности в смысле С++ не было и нет,и Python, тут у меня мало опыта, но нет ни слова о С#, где это всё работает из коробки который уже год
Статья хоть старенькая, но толковая.
Экспериментирую тут с модулями в gcc-12 с cmake. Обычно, на эту тему в интернете какие-то замороченные конфигурации.
Нашёл что работают две директивы cmake.
1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmodules-ts ")
2) add_executable(example mod.cxx mod_impl.cpp main.cpp )
mod.cxx mod_impl.cpp - интерфейс и реализация модуля соответственно. Должны быть указаны до файлов где модуль импортируется и используется(main.cpp).
Модули C++20 и GCC11