namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:module_std_gcc15

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howto:module_std_gcc15 [2026-04-09 16:48] – [How to use C++ module std in GNU g++-15] rrichterhowto:module_std_gcc15 [2026-05-03 11:13] (aktuell) rrichter
Zeile 1: Zeile 1:
-====== How to use C++ module std in GNU g++-15 ======+====== How to use C++ module std in GNU g++ ======
  
-Follow this advicehttps://github.com/JRASoftware/cpp23-import-std-guide+g++-16:
  
 +  g++ -std=c++26 -fmodules --compile-std-module hello.cpp
  
-==== CMake ==== 
  
-<code> 
-cmake_minimum_required(VERSION 3.31) 
  
-project( +g++-15: Follow this advicehttps://github.com/JRASoftware/cpp23-import-std-guide
-    compile_with_module_std +
-    VERSION 0.0.1 +
-    LANGUAGES CXX) +
- +
-# hack #1: temporary hack for GCC g++16.0 HEAD https://www.equation.com gcc-15-20250420-64.exe +
-# to remove when g++ & CMake know about module std +
-add_library(module_std) +
- +
-target_sources(module_std +
-    PUBLIC +
-        FILE_SET CXX_MODULES FILES +
-            gnu/std.cc # copied from MinGW\include\c++\16.0.0\bits\std.cc +
-+
-target_compile_features(module_std PUBLIC cxx_std_26) +
-# also to remove (see below): +
-# target_link_libraries(...XYZ... PRIVATE module_std) +
- +
-# hack #2advanced features like std::print(), std::stacktrace, etc in g++14, g++15, and g++16 HEAD: +
-# target_link_libraries(...XYZ... PRIVATE stdc++exp) +
- +
-add_library(my_module) +
- +
-target_sources(my_module +
-    PUBLIC +
-        FILE_SET CXX_MODULES FILES +
-            src/my_module.cpp  +
-+
-target_compile_features(my_module PUBLIC cxx_std_26) +
-target_link_libraries(my_module PRIVATE module_std) # hack #1 +
- +
-add_executable(demo src/demo.cpp) +
-target_compile_features(demo PUBLIC cxx_std_26) +
-target_link_libraries(demo PRIVATE my_module) +
-target_link_libraries(demo PRIVATE module_std) # hack #1 +
-target_link_libraries(demo PRIVATE stdc++exp)  # hack #2 +
- +
-</code> +
-==== C++ code ==== +
- +
-Modular ''%%src/my_module.cpp%%'' +
- +
-<code cpp> +
-export module my_first_module; +
-import std+
- +
-export namespace something +
-+
- +
-std::string hello(std::string name) +
-+
-    return "Hello, " + name + '!'; +
-}    +
- +
-} // end namespace something +
-</code> +
-used in ''%%demo.cpp%%'': +
- +
-<code cpp> +
-import std; +
-import my_first_module; +
- +
-int main() +
-+
-    std::println("{}", something::hello("modules")); +
-+
-</code>+
  
howto/module_std_gcc15.1775746122.txt.gz · Zuletzt geändert: von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki