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
howto:module_std_gcc15 [2026-04-09 16:48] – [How to use C++ module std in GNU g++-15] rrichterhowto:module_std_gcc15 [2026-04-09 16:48] (aktuell) rrichter
Zeile 2: Zeile 2:
  
 Follow this advice: https://github.com/JRASoftware/cpp23-import-std-guide Follow this advice: https://github.com/JRASoftware/cpp23-import-std-guide
- 
- 
-==== CMake ==== 
- 
-<code> 
-cmake_minimum_required(VERSION 3.31) 
- 
-project( 
-    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 #2: advanced 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.txt · Zuletzt geändert: von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki