Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 27

Не компилируется код C++23 с модулями

14.01.2024, 11:39. Показов 5387. Ответов 7
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не компилируется этот код, использующий модули C++20?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import std;
 
std::generator<int> fibonacci()
{
    int a = 0;
    int b = 1;
    co_yield a;
    while (true)
        co_yield a = std::exchange(b, a + b);
}
 
int main()
{
    std::cout << fibanocci() << std::endl;
 
    return 0;
}
В cmake стандарт языка и ключи компиляции указаны так:

Code
1
2
3
4
5
6
7
8
9
10
cmake_minimum_required(VERSION 3.5)
 
project(coro LANGUAGES CXX)
 
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
add_executable(coro main.cpp)
 
target_compile_options(coro PRIVATE -fcoroutines -fmodules-ts)
Ошибки такие:
Code
1
2
error: Invalid value 'gnu++23' in '-std=gnu++23'
error: Module 'std' not found
Версия GCC 13 на Arch Linux
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2024, 11:39
Ответы с готовыми решениями:

В формате .cpp код компилируется, а в .c не компилируется
1).Подскажите почему в формате .cpp код компилируется, а в .c не компилируется 2). Как сделать так, чтобы компилировалось в .c? ...

Можно ли добавить музыку/мелодию в код в паскале, сделанный модулями?
к примеру к такому, тут палочки об бараны играют, звук играющего барабана добавить //код на паскальабс uses graphabc; var...

Почему в Dev-C++ код не компилируется, если исходный код будет с расширением ".c"?
Почему в Dev-C++ код не компилируется, если исходный код будет с расширением &quot;.c&quot; , а с &quot;.cpp&quot; работает прекрасно? В Википедии...

7
Модератор
Эксперт Java
 Аватар для alecss131
2860 / 1366 / 409
Регистрация: 11.08.2017
Сообщений: 4,383
Записей в блоге: 2
14.01.2024, 13:36
Цитата Сообщение от AngelicQuasar Посмотреть сообщение
cmake
Модули не поддерживает
1
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 27
14.01.2024, 13:44  [ТС]
А qmake поддерживает модули? Попробовал сейчас собрать этот код qmake'ом - еще хуже все
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
14.01.2024, 15:26
AngelicQuasar, ИМХО нужна версия cmake поновее.
Для того, чтобы 23 стандарт поддерживать, нужа версия 3.20 или новее. А модули поддерживаются с версии 3.28.
1
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 27
14.01.2024, 17:51  [ТС]
У меня cmake --version выдает версию 3.28.1

При компиляции выдается ошибка error: Module 'std' not found
То есть cmake понимает, что это модули, но почему-то не находит модуль std. В студии такой проблемы нет, странно.
0
Модератор
Эксперт Java
 Аватар для alecss131
2860 / 1366 / 409
Регистрация: 11.08.2017
Сообщений: 4,383
Записей в блоге: 2
14.01.2024, 21:18
DrOffset, Спасибо за информацию, а то не знал. Знал что только с 25 экспериментальная поддержка
AngelicQuasar, А вам вот ответ на ваш вопрос из Release Notes 28 версии
C++ 20 named modules are now supported by Ninja Generators and Visual Studio Generators for VS 2022 and newer, in combination with the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang 16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and newer. See cmake-cxxmodules(7) for details.
Добавлено через 1 минуту
Осталось найти пример использования, причем не стандартных, а своих
А в студии модули для стандартной библиотеки в экспериментальном состоянии

Добавлено через 2 минуты
AngelicQuasar, И еще немного инфы из доков
Generator Support

The list of generators which support scanning sources for C++ modules include:

Ninja

Ninja Multi-Config

Visual Studio 17 2022
И второе
Limitations

There are a number of known limitations of the current C++ module support in CMake. This does not document known limitations or bugs in compilers as these can change over time.

For all generators:

Header units are not supported.

No builtin support for import std; or other compiler-provided modules.

For the Ninja Generators:

ninja 1.11 or newer is required.

For the Visual Studio Generators:

Only Visual Studio 2022 and MSVC toolsets 14.34 (Visual Studio 17.4) and newer.

No support for exporting or installing BMI or module information.

No support for compiling BMIs from IMPORTED targets with C++ modules.

No diagnosis of using modules provided by PRIVATE sources from PUBLIC module sources.
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
15.01.2024, 01:52
Разве это cmake выдаёт ошибку? Мне кажется, что cmake отработал нормально, а ошибку выдаёт компилятор.
Жалобы на std, скорее всего, связаны с тем, что нет ни одного include. Попробуйте в начало cpp-файла добавить
C++
1
2
3
#include <generator>
#include <iostream>
#include <utility>
А вот почему компилятор не понял "-std=gnu++23" не знаю. У меня с GCC 13.2.1 принимает эту опцию.
Убедитесь в том, что у вас 13 версия:
Bash
1
g++ --version
И можно посмотреть, какой компилятор использует cmake, если запустить "ccmake ." и там нажать T (потом Q для выхода).
0
Модератор
Эксперт Java
 Аватар для alecss131
2860 / 1366 / 409
Регистрация: 11.08.2017
Сообщений: 4,383
Записей в блоге: 2
15.01.2024, 11:32
Цитата Сообщение от Humanoid Посмотреть сообщение
Жалобы на std, скорее всего, связаны с тем, что нет ни одного include
Как бы то что использовано замена стандартным иклудам.
Только вот про тонкости использования модулей с cmake написал выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2024, 11:32
Помогаю со студенческими работами здесь

Не компилируется код
Есть код на подобие такого: template&lt;int a&gt; class A { public: static const int x1 = B&lt;a,1&gt;::x2; }; template&lt;int a, int...

Не компилируется код
была старая банка там все норм тянуло, работал на IDEA, сейчас на новом компе сижу, установил jdk-7u25-windows-x64 как пологается поставил...

Не компилируется код
class Animal { String name; public String getName() { return name; } public Animal(String theName) { ...

Не компилируется код
В чём тут может быть проблема? Постоянно выскакивают ошибки в locale().cpp #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; ...

Не компилируется код
я написал код проверял не компелирует почему-то пользуюсь dev c++ пишет проект или исходный файл не скомпелирован вот код #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru