Pull to refresh

Comments 15

UFO just landed and posted this here

MSVS как IDE пока откровенно хреново с модулями работает, это да. Вот собственно компилятор мелкомягкий уже переваривает их более-менее нормально.

Сами же модули, как они введены стандартом, лично мне не понравились: переусложнено, запутано, чревато ошибками... Как по мне, лучше было бы вводить модули в стиле Ады.

IDE от них быстро плохеет: то одно криво, то другое.

intellisense пока экспериментальный и кривой. когда его доделают — не понятно.
а еще после перевода небольшого проекта на модули у меня скорость сборки упала.

Ну вообще несколько странно. По идее инкрементальная сборка должна была ускориться.

я замерял rebuild. у модулей есть накладные расходы — создается файлов на сто и больше мегабайт (на nvme), т.е. в десятки раз больше. так что если процессор быстрый, то скорость может упасть.

Ну а теперь сравниваем этот зоопарк с Rust + rust-analyzer.

Перевод статьи двухлетней давности по модулям...
Де́ржите планку.

IMHO в данном конкретном случае - ничего страшного. С поддержкой модулей в том же cmake всё на столько странно, что тему можно считать свежей как и старые статьи по ней :)

В текущей версии 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).

Sign up to leave a comment.