# CXX-Modules: import std does still not work on Linux with clang++

**URL:** https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262
**Category:** Development
**Tags:** os:linux
**Created:** [October 25, 2025, 4:33pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262 "2025-10-25T16:33:26Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [October 25, 2025, 4:33pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/1 "2025-10-25T16:33:27Z")

</div>

```bash
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(357): if(xCXX STREQUAL xCXX AND EXISTS /root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CXX-DetectStdlib.h AND ( xClang STREQUAL xClang AND xGNU STREQUAL xGNU ) OR ( xClang STREQUAL xGNU ) )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(363): execute_process(COMMAND /root/llvm/bin/clang++ -U_FORTIFY_SOURCE;-D_FORTIFY_SOURCE=3;-fstack-protector-strong;-fcf-protection=full;-fstack-clash-protection;-Wall;-Wextra;-Wpedantic;-Wconversion;-Wsign-conversion;-Wcast-qual;-Wformat=2;-Wno-undef;-Werror=float-equal;-Wshadow;-Wcast-align;-Wunused;-Wnull-dereference;-Wdouble-promotion;-Wimplicit-fallthrough;-Wextra-semi;-Woverloaded-virtual;-Wnon-virtual-dtor;-Wold-style-cast -E -x c++-header /root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CXX-DetectStdlib.h -o - OUTPUT_VARIABLE _lang_stdlib_out ERROR_VARIABLE _lang_stdlib_err RESULT_VARIABLE _lang_stdlib_res ERROR_STRIP_TRAILING_WHITESPACE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(375): if(_lang_stdlib_res EQUAL 0 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(376): string(REGEX REPLACE .*CMAKE-STDLIB-DETECT: (.+)
.* \1 CMAKE_CXX_STANDARD_LIBRARY # 1 "/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CXX-DetectStdlib.h"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 480 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CXX-DetectStdlib.h" 2
# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/version" 1 3
# 34 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/version" 3

# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/version.h" 1 3
# 48 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/version.h" 3

# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 1 3
# 34 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
# 308 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
namespace std
{
  typedef long unsigned int size_t;
  typedef long int ptrdiff_t;

  typedef decltype(nullptr) nullptr_t;

#pragma GCC visibility push(default)

  extern "C++" __attribute__ (( __noreturn__ , __always_inline__ ))
  inline void __terminate() noexcept
  {
    void terminate() noexcept __attribute__ (( __noreturn__ , __cold__ ));
    terminate();
  }
#pragma GCC visibility pop
}
# 341 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
namespace std
{
  inline namespace __cxx11__ attribute__((__abi_tag__ ("cxx11"))) { }
}
namespace __gnu_cxx
{
  inline namespace __cxx11__ attribute__((__abi_tag__ ("cxx11"))) { }
}
# 534 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
namespace std
{
#pragma GCC visibility push(default)

  __attribute__ (( __always_inline__ ))
  constexpr inline bool
  __is_constant_evaluated() noexcept
  {

    return __builtin_is_constant_evaluated();

  }
#pragma GCC visibility pop
}
# 573 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
namespace std
{
#pragma GCC visibility push(default)

  extern "C++" __attribute__ (( __noreturn__ ))
  void
  __glibcxx_assert_fail
    (const char* __file, int__ line, const char* __function,
     const char* __condition)
  noexcept;
#pragma GCC visibility pop
}
# 601 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
namespace std
{
  __attribute__ (( __always_inline__ , __visibility__ ("default")))
  inline void
  __glibcxx_assert_fail()
  { }
}
# 680 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/os_defines.h" 1 3
# 39 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/os_defines.h" 3
# 1 "/usr/include/features.h" 1 3 4
# 394 "/usr/include/features.h" 3 4
# 1 "/usr/include/features-time64.h" 1 3 4
# 20 "/usr/include/features-time64.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 21 "/usr/include/features-time64.h" 2 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 1 3 4
# 19 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 20 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 2 3 4
# 22 "/usr/include/features-time64.h" 2 3 4
# 395 "/usr/include/features.h" 2 3 4
# 480 "/usr/include/features.h" 3 4
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 481 "/usr/include/features.h" 2 3 4
# 502 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
# 576 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 577 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/long-double.h" 1 3 4
# 578 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
# 503 "/usr/include/features.h" 2 3 4
# 526 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4
# 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4
# 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4
# 527 "/usr/include/features.h" 2 3 4
# 40 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/os_defines.h" 2 3
# 681 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 2 3

# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/cpu_defines.h" 1 3
# 684 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 2 3
# 887 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 3
# 1 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/pstl/pstl_config.h" 1 3
# 888 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/c++config.h" 2 3
# 50 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/version.h" 2 3
# 37 "/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/version" 2 3
# 2 "/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CXX-DetectStdlib.h" 2

CMAKE-STDLIB-DETECT: libstdc++
 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(381): if(CMAKE_CXX_COMPILER_ID )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(382): if(CMAKE_CXX_COMPILER_VERSION )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(383): set(_version 20.1.6 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(387): if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID AND xClang STREQUAL xIAR )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(389): else()
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(390): set(_archid )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(392): if(CMAKE_CXX_HOST_COMPILER_ID )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(397): else()
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(398): set(_hostcc )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(400): message(STATUS The CXX compiler identification is Clang 20.1.6 )
-- The CXX compiler identification is Clang 20.1.6
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(402): unset(_hostcc )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(403): unset(_archid )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(404): unset(_version )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(405): unset(_variant )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(410): if(lang STREQUAL Fortran AND CMAKE_CXX_COMPILER_ID STREQUAL XL )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(414): set(CMAKE_CXX_COMPILER_ID Clang PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(415): set(CMAKE_CXX_PLATFORM_ID Linux PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(416): set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(417): set(MSVC_CXX_ARCHITECTURE_ID PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(419): set(CMAKE_CXX_XCODE_ARCHS PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(420): set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(421): set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT GNU PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(422): set(CMAKE_CXX_COMPILER_VERSION 20.1.6 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(423): set(CMAKE_CXX_COMPILER_VERSION_INTERNAL PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(424): set(CMAKE_CXX_COMPILER_WRAPPER PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(425): set(CMAKE_CXX_SIMULATE_ID PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(426): set(CMAKE_CXX_SIMULATE_VERSION PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(427): set(CMAKE_CXX_HOST_COMPILER_ID PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(428): set(CMAKE_CXX_HOST_COMPILER_VERSION PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(429): set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 17 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(430): set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT ON PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(431): set(CMAKE_CXX_COMPILER_PRODUCED_OUTPUT PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(432): set(CMAKE_CXX_COMPILER_PRODUCED_FILES a.out PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(433): set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR /root/llvm/lib/clang/20 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(434): set(CMAKE_CXX_STANDARD_LIBRARY libstdc++ PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerId.cmake(435): set(CMAKE_CXX_COMPILER_APPLE_SYSROOT PARENT_SCOPE )
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /root/llvm/bin/clang++ - skipped
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(5): function(cmake_determine_compiler_support lang )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(7): if(xCXX STREQUAL xC AND COMMAND cmake_record_c_compile_features )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(57): elseif(xCXX STREQUAL xCXX AND COMMAND cmake_record_cxx_compile_features )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(58): message(CHECK_START Detecting CXX compile features )
-- Detecting CXX compile features
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(60): set(CMAKE_CXX98_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(61): set(CMAKE_CXX11_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(62): set(CMAKE_CXX14_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(63): set(CMAKE_CXX17_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(64): set(CMAKE_CXX20_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(65): set(CMAKE_CXX23_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(66): set(CMAKE_CXX26_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(68): include(/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Internal/FeatureTesting.cmake )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(70): cmake_record_cxx_compile_features()
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(72): if(NOT _result EQUAL 0 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(77): if(CMAKE_CXX23_COMPILE_FEATURES AND CMAKE_CXX26_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(78): list(REMOVE_ITEM CMAKE_CXX26_COMPILE_FEATURES cxx_std_23 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(80): if(CMAKE_CXX20_COMPILE_FEATURES AND CMAKE_CXX23_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(81): list(REMOVE_ITEM CMAKE_CXX23_COMPILE_FEATURES cxx_std_20 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(83): if(CMAKE_CXX17_COMPILE_FEATURES AND CMAKE_CXX20_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(84): list(REMOVE_ITEM CMAKE_CXX20_COMPILE_FEATURES cxx_std_17 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(86): if(CMAKE_CXX14_COMPILE_FEATURES AND CMAKE_CXX17_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(87): list(REMOVE_ITEM CMAKE_CXX17_COMPILE_FEATURES cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(89): if(CMAKE_CXX11_COMPILE_FEATURES AND CMAKE_CXX14_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(90): list(REMOVE_ITEM CMAKE_CXX14_COMPILE_FEATURES cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(92): if(CMAKE_CXX98_COMPILE_FEATURES AND CMAKE_CXX11_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(93): list(REMOVE_ITEM CMAKE_CXX11_COMPILE_FEATURES cxx_std_98;cxx_template_template_parameters )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(96): if(NOT CMAKE_CXX_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(97): set(CMAKE_CXX_COMPILE_FEATURES cxx_std_98;cxx_template_template_parameters cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates cxx_std_17 cxx_std_20 cxx_std_23 cxx_std_26 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(109): set(CMAKE_CXX_IMPORT_STD )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(110): foreach(_cmake_import_std_version IN ITEMS 23 26 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(111): if(CMAKE_CXX23_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(112): set(_cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(113): cmake_create_cxx_import_std(23 _cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(1): function(_cmake_cxx_import_std std variable )
CMake Warning (dev) at /root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/CMakeCommonCompilerMacros.cmake:248 (cmake_language):
  CMake's support for `import std;` in C++23 and newer is experimental. It
  is meant only for experimentation and feedback to CMake developers.
Call Stack (most recent call first):
  /root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake:113 (cmake_create_cxx_import_std)
  /root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeTestCXXCompiler.cmake:83 (CMAKE_DETERMINE_COMPILER_SUPPORT)
  CMakeLists.txt:5 (project)
This warning is for project developers. Use -Wno-dev to suppress it.

/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(2): if(CMAKE_CXX_STANDARD_LIBRARY STREQUAL libc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(4): elseif(CMAKE_CXX_STANDARD_LIBRARY STREQUAL libstdc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(5): set(_clang_modules_json_impl libstdc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(13): execute_process(COMMAND /root/llvm/bin/clang++ -print-file-name=libstdc++.modules.json OUTPUT_VARIABLE _clang_libcxx_modules_json_file ERROR_VARIABLE _clang_libcxx_modules_json_file_err RESULT_VARIABLE _clang_libcxx_modules_json_file_res OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(23): if(_clang_libcxx_modules_json_file_res )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(31): if(NOT EXISTS libstdc++.modules.json )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(32): set(target_definition set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(35): return()
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(114): if(_cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(115): string(APPEND CMAKE_CXX_IMPORT_STD ### Imported target for C++23 standard library
 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(116): string(APPEND CMAKE_CXX_IMPORT_STD if (NOT TARGET "__CMAKE::CXX23")
set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
endif ()
if (TARGET "__CMAKE::CXX23")
  list(APPEND CMAKE_CXX_COMPILER_IMPORT_STD "23")
endif ()

 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(111): if(CMAKE_CXX26_COMPILE_FEATURES )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(112): set(_cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(113): cmake_create_cxx_import_std(26 _cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(1): function(_cmake_cxx_import_std std variable )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(2): if(CMAKE_CXX_STANDARD_LIBRARY STREQUAL libc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(4): elseif(CMAKE_CXX_STANDARD_LIBRARY STREQUAL libstdc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(5): set(_clang_modules_json_impl libstdc++ )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(13): execute_process(COMMAND /root/llvm/bin/clang++ -print-file-name=libstdc++.modules.json OUTPUT_VARIABLE _clang_libcxx_modules_json_file ERROR_VARIABLE _clang_libcxx_modules_json_file_err RESULT_VARIABLE _clang_libcxx_modules_json_file_res OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(23): if(_clang_libcxx_modules_json_file_res )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(31): if(NOT EXISTS libstdc++.modules.json )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(32): set(target_definition set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/Compiler/Clang-CXX-CXXImportStd.cmake(35): return()
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(114): if(_cmake_cxx_import_std )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(115): string(APPEND CMAKE_CXX_IMPORT_STD ### Imported target for C++26 standard library
 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(116): string(APPEND CMAKE_CXX_IMPORT_STD if (NOT TARGET "__CMAKE::CXX26")
set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
endif ()
if (TARGET "__CMAKE::CXX26")
  list(APPEND CMAKE_CXX_COMPILER_IMPORT_STD "26")
endif ()

 )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(121): set(CMAKE_CXX_COMPILE_FEATURES cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(122): set(CMAKE_CXX98_COMPILE_FEATURES cxx_std_98;cxx_template_template_parameters PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(123): set(CMAKE_CXX11_COMPILE_FEATURES cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(124): set(CMAKE_CXX14_COMPILE_FEATURES cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(125): set(CMAKE_CXX17_COMPILE_FEATURES cxx_std_17 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(126): set(CMAKE_CXX20_COMPILE_FEATURES cxx_std_20 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(127): set(CMAKE_CXX23_COMPILE_FEATURES cxx_std_23 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(128): set(CMAKE_CXX26_COMPILE_FEATURES cxx_std_26 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(129): set(CMAKE_CXX_IMPORT_STD ### Imported target for C++23 standard library
if (NOT TARGET "__CMAKE::CXX23")
set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
endif ()
if (TARGET "__CMAKE::CXX23")
  list(APPEND CMAKE_CXX_COMPILER_IMPORT_STD "23")
endif ()

### Imported target for C++26 standard library
if (NOT TARGET "__CMAKE::CXX26")
set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "`libstdc++.modules.json` resource does not exist")
endif ()
if (TARGET "__CMAKE::CXX26")
  list(APPEND CMAKE_CXX_COMPILER_IMPORT_STD "26")
endif ()

 PARENT_SCOPE )
/root/cmake/cmake-4.0.4-linux-x86_64/share/cmake-4.0/Modules/CMakeDetermineCompilerSupport.cmake(131): message(CHECK_PASS done )
-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_IMPORT_STD=
-- ALGO_USE_MODULES=ON
-- CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES=/usr/include/c++/14;/usr/include/x86_64-linux-gnu/c++/14;/usr/include/c++/14/backward;/root/llvm/lib/clang/20/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include
CMake Error at CMakeLists.txt:52 (message):
  Missing support for CMAKE_CXX_MODULE_STD!

-- Configuring incomplete, errors occurred!
make: *** [GNUmakefile:30: all] Error 1
root ➜ /home/builder/workdir (feature/import-std-in-cmake-3-30) $

```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [October 25, 2025, 4:36pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/2 "2025-10-25T16:36:11Z")

</div>

### I can’t understand why libstdc++ is searched?

I have tried it with every available cmake version 4.x and llvm version 20, 21, and 22!

```bash
root ➜ /home/builder/workdir (feature/import-std-in-cmake-3-30) $ /root/llvm/bin/clang++ -print-file-name=libc++.modules.json
/root/llvm/bin/../lib/x86_64-unknown-linux-gnu/libc++.modules.json

root ➜ /home/builder/workdir (feature/import-std-in-cmake-3-30) $ cat /root/llvm/bin/../lib/x86_64-unknown-linux-gnu/libc++.modules.json
{
  "version": 1,
  "revision": 1,
  "modules": [
    {
      "logical-name": "std",
      "source-path": "../../share/libc++/v1/std.cppm",
      "is-std-library": true,
      "local-arguments": {
        "system-include-directories": [
          "../../share/libc++/v1"
        ]
      }
    },
    {
      "logical-name": "std.compat",
      "source-path": "../../share/libc++/v1/std.compat.cppm",
      "is-std-library": true,
      "local-arguments": {
        "system-include-directories": [
          "../../share/libc++/v1"
        ]
      }
    }
  ]
}
root ➜ /home/builder/workdir (feature/import-std-in-cmake-3-30) $ 

```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [October 25, 2025, 6:46pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/3 "2025-10-25T18:46:25Z")

</div>

… and I can compile the `libc++.modules.json` contents:

```bash
root ➜ /home/builder/workdir (feature/use_cxx_module_std) $ ninja -C build/dev clean 
ninja: Entering directory `build/dev'
[1/1] Cleaning all built files...
Cleaning... 20 files.
root ➜ /home/builder/workdir (feature/use_cxx_module_std) $ ninja -C build/dev stdc++ -v
ninja: Entering directory `build/dev'
[1/6] "/usr/bin/clang-scan-deps-20" -format=p1689 -- /usr/lib/llvm-20/bin/clang++ -D_LIBCPP_HAS_NO_LOCALIZATION -O3 -DNDEBUG -std=gnu++26 -fexperimental-library -stdlib=libc++ -Wno-reserved-module-identifier -x c++ /usr/lib/llvm-20/share/libc++/v1/std.compat.cppm -c -o module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o -resource-dir "/usr/lib/llvm-20/lib/clang/20" -MT module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.ddi -MD -MF module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.ddi.d > module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.ddi.tmp && mv module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.ddi.tmp module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.ddi
[2/6] "/usr/bin/clang-scan-deps-20" -format=p1689 -- /usr/lib/llvm-20/bin/clang++ -D_LIBCPP_HAS_NO_LOCALIZATION -O3 -DNDEBUG -std=gnu++26 -fexperimental-library -stdlib=libc++ -Wno-reserved-module-identifier -x c++ /usr/lib/llvm-20/share/libc++/v1/std.cppm -c -o module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o -resource-dir "/usr/lib/llvm-20/lib/clang/20" -MT module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.ddi -MD -MF module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.ddi.d > module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.ddi.tmp && mv module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.ddi.tmp module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.ddi
[3/6] /root/cmake/cmake-4.0.4-linux-x86_64/bin/cmake -E cmake_ninja_dyndep --tdi=module/tests/CMakeFiles/stdc++.dir/CXXDependInfo.json --lang=CXX --modmapfmt=clang --dd=module/tests/CMakeFiles/stdc++.dir/CXX.dd @module/tests/CMakeFiles/stdc++.dir/CXX.dd.rsp
[4/6] /usr/bin/ccache /usr/lib/llvm-20/bin/clang++ -D_LIBCPP_HAS_NO_LOCALIZATION -O3 -DNDEBUG -std=gnu++26 -fexperimental-library -stdlib=libc++ -Wno-reserved-module-identifier -MD -MT module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o -MF module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.d @module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o.modmap -o module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o -c /usr/lib/llvm-20/share/libc++/v1/std.cppm
[5/6] /usr/bin/ccache /usr/lib/llvm-20/bin/clang++ -D_LIBCPP_HAS_NO_LOCALIZATION -O3 -DNDEBUG -std=gnu++26 -fexperimental-library -stdlib=libc++ -Wno-reserved-module-identifier -MD -MT module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o -MF module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.d @module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o.modmap -o module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o -c /usr/lib/llvm-20/share/libc++/v1/std.compat.cppm
[6/6] : && /root/cmake/cmake-4.0.4-linux-x86_64/bin/cmake -E rm -f module/tests/libstdc++.a && /usr/lib/llvm-20/bin/llvm-ar qc module/tests/libstdc++.a module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.cppm.o module/tests/CMakeFiles/stdc++.dir/usr/lib/llvm-20/share/libc++/v1/std.compat.cppm.o && /usr/lib/llvm-20/bin/llvm-ranlib module/tests/libstdc++.a && :
root ➜ /home/builder/workdir (feature/use_cxx_module_std) $ uname -a
Linux fe5675bfd498 6.10.14-linuxkit #1 SMP PREEMPT_DYNAMIC Tue Oct 14 07:34:37 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root ➜ /home/builder/workdir (feature/use_cxx_module_std) $ cat /etc/issue
Ubuntu 24.04.2 LTS \n \l

root ➜ /home/builder/workdir (feature/use_cxx_module_std) $ 

```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 12:24pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/4 "2026-07-16T12:24:12Z")

</div>

### Update: it is still a problem under `ubuntu:24.04` and `clang++-23` installed

```bash
root@240450b65960:/home/builder/workdir# clang++-23 -print-file-name=libc++.modules.json
/lib/x86_64-linux-gnu/libc++.modules.json

root@240450b65960:/home/builder/workdir# which clang++
/usr/bin/clang++

root@240450b65960:/home/builder/workdir# clang++ --version
Ubuntu clang version 23.0.0 (++20260707081847+70646dd3eda3-1~exp1~20260707082012.1709)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-23/bin

root@240450b65960:/home/builder/workdir# cat /lib/x86_64-linux-gnu/libc++.modules.json
{
  "version": 1,
  "revision": 1,
  "modules": [
    {
      "logical-name": "std",
      "source-path": "../share/libc++/v1/std.cppm",
      "is-std-library": true,
      "local-arguments": {
        "system-include-directories": [
          "../share/libc++/v1"
        ]
      }
    },
    {
      "logical-name": "std.compat",
      "source-path": "../share/libc++/v1/std.compat.cppm",
      "is-std-library": true,
      "local-arguments": {
        "system-include-directories": [
          "../share/libc++/v1"
        ]
      }
    }
  ]
}
root@240450b65960:/home/builder/workdir# 

root@240450b65960:/home/builder/workdir# find /usr -name '*.cppm'
/usr/lib/llvm-23/share/libc++/v1/std.compat.cppm
/usr/lib/llvm-23/share/libc++/v1/std.cppm

##################################

find /usr/lib/llvm-23 -name 'libc*.json'
/usr/lib/llvm-23/lib/libc++.modules.json

-- FMT_USE_MODULES==ON
-- CMAKE_CXX_MODULE_STD=ON
-- CMAKE_CXX_COMPILER_IMPORT_STD=23;26
-- Module tests to be built: module-test
-- Configuring done (13.4s)
CMake Error:
  Cannot find source file:

    /lib/share/libc++/v1/std.compat.cppm

CMake Error in CMakeLists.txt:
  No SOURCES given to target: @cmake_cxx_std

CMake Generate step failed. Build files cannot be regenerated correctly.
gmake: *** [GNUmakefile:90: .init] Error 1

```

There exists a workaround while building a docker image:

### Fix broken libc++ module metadata path from [apt.llvm.org](http://apt.llvm.org) Ubuntu package

```dockerfile
RUN sed -i \
    's#\.\./share/libc++#/usr/lib/llvm-'${LLVM_VERSION}'/share/libc++#' \
    /lib/x86_64-linux-gnu/libc++.modules.json

```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 3:35pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/5 "2026-07-16T15:35:10Z")

</div>

here is my used `Dockerfile`:

```dockerfile
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
# Matthias Kretz <m.kretz@gsi.de>

FROM ghcr.io/mattkretz/cplusplus-ci/gcc14

ENV DEBIAN_FRONTEND=noninteractive

ENV LLVM_VERSION=23

# NOTE: pipx ensurepath -> appends /root/.local/bin to the PATH environment variable.
ENV PATH="/root/.local/bin:${PATH}"

RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - && \
    add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble main" && \
    apt-get update && \
    apt-get install -y --no-install-recommends \
    bash bash-completion vim tree less symlinks direnv \
    build-essential curl git wget libssl-dev \
    doxygen graphviz python3-pip python-is-python3 pipx \
    zip ccache \
    clang-${LLVM_VERSION} \
    clang-tidy-${LLVM_VERSION} \
    clang-format-${LLVM_VERSION} \
    libc++-${LLVM_VERSION}-dev \
    libc++abi-${LLVM_VERSION}-dev && \
    apt-get install -y --no-install-recommends libclang-rt-${LLVM_VERSION}-dev && \
    update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
                        --slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
    update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
    update-alternatives --install /usr/bin/run-clang-tidy run-clang-tidy /usr/bin/run-clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
    update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
    apt-get clean

# QUICKFIX: ajust the broken relative paths inside libc++.modules.json
RUN sed -i \
    's#\.\./share/libc++#/usr/lib/llvm-'${LLVM_VERSION}'/share/libc++#' \
    /lib/x86_64-linux-gnu/libc++.modules.json

RUN pipx install cmake && \
    pipx install --include-deps cmake-format && \
    pipx install codespell && \
    pipx install conan && \
    pipx install gcovr && \
    pipx install gersemi && \
    pipx install ninja && \
    pipx install pre-commit && \
    pipx install uv

WORKDIR /home/builder/workdir
``
```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 3:55pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/6 "2026-07-16T15:55:16Z")

</div>

And this is my build environment needed:

```makefile
ifeq (${hostSystemName},Linux)
  # clang++ -print-file-name=libc++.modules.json
  # /lib/x86_64-linux-gnu/libc++.modules.json
  # /usr/lib/llvm-23/lib/libc++.modules.json -> ../../x86_64-linux-gnu/libc++.modules.json
  # /usr/lib/llvm-23/share/libc++/v1/std.compat.cppm
  # /usr/lib/llvm-23/share/libc++/v1/std.cppm
  # possible other QUICKFIX: /lib/share -> /usr/lib/llvm-23/share
  STDLIB:=libc++
  export LLVM_DIR:=/usr/lib/llvm-23
  export PATH:=${LLVM_DIR}/bin:${PATH}
  export CXX:=clang++-23
  export CXXFLAGS:=-stdlib=$(STDLIB)
  export LDFLAGS:=-L$(LLVM_DIR)/lib/c++ # XXX -lc++abi
  export CMAKE_CXX_STDLIB_MODULES_JSON:=$(shell clang++-23 -print-file-name=libc++.modules.json)
  # export CMAKE_CXX_STDLIB_MODULES_JSON:=${LLVM_DIR}/lib/c++/$(STDLIB).modules.json
endif

```

---

<div class="post-metadata">

### Author: ![vito.gamberini](https://discourse.cmake.org/user_avatar/discourse.cmake.org/vito.gamberini/32/4376_2.png) [@vito.gamberini](https://discourse.cmake.org/u/vito.gamberini)
#### Post date: [July 16, 2026, 4:55pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/7 "2026-07-16T16:55:07Z")

</div>

`CMAKE_CXX_STDLIB_MODULES_JSON` combined with a custom std.modules.json is the intended mechanism to fix a compiler or stdlib package which contains a bogus module manifest.

CMake can’t force packagers to accurately record the location of the std module.

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 4:58pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/8 "2026-07-16T16:58:47Z")

</div>

Thanks, for `clang++` it works, but for `g++-16` I see this:

```bash
sed -i \
    's#\.\./include/c++#/opt/gcc-16/include/c++#' \
    /opt/gcc-16/lib64/libstdc++.modules.json

CXX=g++-16 cmake --preset ci-Linux -D CMAKE_CXX_STDLIB_MODULES_JSON=/opt/gcc-16/lib64/libstdc++.modules.json --log-level=VERBOSE --fresh
Preset CMake variables:

  CMAKE_BUILD_TYPE="Release"
  CMAKE_CXX_EXTENSIONS:BOOL="FALSE"
  CMAKE_CXX_FLAGS_DEBUG="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -Wall -Wextra -Wpedantic -Wno-conversion -Wno-sign-conversion -Wcast-qual -Wformat=2 -Wundef -Wno-float-equal -Wshadow -Wcast-align -Wunused -Wnull-dereference -Wdouble-promotion -Wno-implicit-fallthrough -Wextra-semi -Woverloaded-virtual -Wnon-virtual-dtor -Wno-old-style-cast"
  CMAKE_CXX_SCAN_FOR_MODULES:BOOL="TRUE"
  CMAKE_CXX_STANDARD="23"
  CMAKE_CXX_STANDARD_REQUIRED:BOOL="TRUE"
  CMAKE_EXE_LINKER_FLAGS_DEBUG="-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now"
  CMAKE_EXPORT_COMPILE_COMMANDS:BOOL="TRUE"
  CMAKE_INSTALL_PREFIX:PATH="/home/builder/workdir/stagedir"
  CMAKE_MESSAGE_LOG_LEVEL="VERBOSE"
  CMAKE_PREFIX_PATH:STRING="/home/builder/workdir/stagedir"
  CMAKE_SHARED_LINKER_FLAGS_DEBUG="-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now"
  CMAKE_VERIFY_INTERFACE_HEADER_SETS:BOOL="TRUE"
  FMT_DEVELOPER_MODE:BOOL="TRUE"

-- The CXX compiler identification is GNU 17.0.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++-16 - skipped
-- Detecting CXX compile features
CMake Warning (experimental) at /root/.local/share/pipx/venvs/cmake/lib/python3.12/site-packages/cmake/data/share/cmake-4.4/Modules/Compiler/CMakeCommonCompilerMacros.cmake:226 (cmake_language):
  CMake's support for `import std;` in C++23 and newer is experimental. It
  is meant only for experimentation and feedback to CMake developers.
Call Stack (most recent call first):
  /root/.local/share/pipx/venvs/cmake/lib/python3.12/site-packages/cmake/data/share/cmake-4.4/Modules/CMakeDetermineCompilerSupport.cmake:157 (cmake_cxx_find_modules_json)
  /root/.local/share/pipx/venvs/cmake/lib/python3.12/site-packages/cmake/data/share/cmake-4.4/Modules/CMakeTestCXXCompiler.cmake:81 (CMAKE_DETERMINE_COMPILER_SUPPORT)
  CMakeLists.txt:13 (project)
This warning is for project developers. Use -Wno-author or -Wno-experimental
to suppress it.

-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_IMPORT_STD=23;26
-- CMAKE_CXX_SCAN_FOR_MODULES=TRUE
-- CMAKE_CXX_MODULE_STD=ON
-- CPPdefinitions=FMT_MODULE;FMT_IMPORT_STD
-- CPM: Adding package fmt@12.2.0 (12.2.0)
-- Populating fmt
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/builder/workdir/build/_deps/fmt-subbuild
[0/7] Performing update step for 'fmt-populate'
-- Already at requested tag: 12.2.0
[1/7] No patch step for 'fmt-populate'
[3/7] No configure step for 'fmt-populate'
[4/7] No build step for 'fmt-populate'
[5/7] No install step for 'fmt-populate'
[6/7] No test step for 'fmt-populate'
[7/7] Completed 'fmt-populate'
-- FMT_USE_MODULES=ON
-- CMAKE_CXX_MODULE_STD=ON
-- CMAKE_CXX_COMPILER_IMPORT_STD=23;26
-- Module tests to be built: module-test
-- Configuring done (0.6s)
-- Generating done (0.1s)

-- Build files have been written to: /home/builder/workdir/build
root@cd8acd0382d0:/home/builder/workdir# ninja -C build/
ninja: Entering directory `build/'
[0/2] Re-checking globbed directories...
[1/19] Scanning /opt/gcc-16/include/c++/17.0.0/bits/std.cc for CXX dependencies
FAILED: [code=1] CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o.ddi 
/usr/bin/g++-16 -O3 -DNDEBUG -std=c++23 -stdlib=libstdc++ -E -x c++ /opt/gcc-16/include/c++/17.0.0/bits/std.cc -MT CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o.ddi -MD -MF CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o.ddi -fdeps-target=CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o -fdeps-format=p1689r5 -o CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.cc.o.ddi.i
g++-16: error: unrecognized command-line option '-stdlib=libstdc++'
[2/19] Scanning /opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc for CXX dependencies
FAILED: [code=1] CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o.ddi 
/usr/bin/g++-16 -O3 -DNDEBUG -std=c++23 -stdlib=libstdc++ -E -x c++ /opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc -MT CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o.ddi -MD -MF CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o.ddi -fdeps-target=CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o -fdeps-format=p1689r5 -o CMakeFiles/@cmake_cxx_std.dir/opt/gcc-16/include/c++/17.0.0/bits/std.compat.cc.o.ddi.i
g++-16: error: unrecognized command-line option '-stdlib=libstdc++'
[3/19] Scanning /home/builder/workdir/module/fmt.cppm for CXX dependencies
FAILED: [code=1] CMakeFiles/fmt.dir/module/fmt.cppm.o.ddi 
/usr/bin/g++-16 -DFMT_IMPORT_STD -DFMT_MODULE -I/home/builder/workdir/build/_deps/fmt-src/include -O3 -DNDEBUG -std=c++23 -stdlib=libstdc++ -E -x c++ /home/builder/workdir/module/fmt.cppm -MT CMakeFiles/fmt.dir/module/fmt.cppm.o.ddi -MD -MF CMakeFiles/fmt.dir/module/fmt.cppm.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/fmt.dir/module/fmt.cppm.o.ddi -fdeps-target=CMakeFiles/fmt.dir/module/fmt.cppm.o -fdeps-format=p1689r5 -o CMakeFiles/fmt.dir/module/fmt.cppm.o.ddi.i
g++-16: error: unrecognized command-line option '-stdlib=libstdc++'
[4/19] Scanning /home/builder/workdir/tests/header-only-test.cc for CXX dependencies
FAILED: [code=1] tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o.ddi 
/usr/bin/g++-16 -DFMT_IMPORT_STD -DFMT_MODULE -I/home/builder/workdir/build/_deps/fmt-src/include -O3 -DNDEBUG -std=c++23 -stdlib=libstdc++ -E -x c++ /home/builder/workdir/tests/header-only-test.cc -MT tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o.ddi -MD -MF tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o.ddi.d -fmodules-ts -fdeps-file=tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o.ddi -fdeps-target=tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o -fdeps-format=p1689r5 -o tests/CMakeFiles/header-only-test.dir/header-only-test.cc.o.ddi.i
g++-16: error: unrecognized command-line option '-stdlib=libstdc++'
[5/19] Scanning /home/builder/workdir/module/tests/module-test.cc for CXX dependencies
FAILED: [code=1] module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o.ddi 
/usr/bin/g++-16 -DFMT_IMPORT_STD -DFMT_MODULE -I/home/builder/workdir/build/_deps/fmt-src/include -O3 -DNDEBUG -std=c++23 -stdlib=libstdc++ -E -x c++ /home/builder/workdir/module/tests/module-test.cc -MT module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o.ddi -MD -MF module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o.ddi.d -fmodules-ts -fdeps-file=module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o.ddi -fdeps-target=module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o -fdeps-format=p1689r5 -o module/tests/CMakeFiles/module_module-test.dir/module-test.cc.o.ddi.i
g++-16: error: unrecognized command-line option '-stdlib=libstdc++'
ninja: build stopped: subcommand failed.
root@cd8acd0382d0:/home/builder/workdir# 

root@cd8acd0382d0:/home/builder/workdir# cmake --version && ninja --version && g++-16 --version
cmake version 4.4.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).
1.13.0.git.kitware.jobserver-pipe-1
g++-16 (GCC) 17.0.0 20260716 (experimental)
Copyright (C) 2026 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@cd8acd0382d0:/home/builder/workdir# 

```

---

<div class="post-metadata">

### Author: ![vito.gamberini](https://discourse.cmake.org/user_avatar/discourse.cmake.org/vito.gamberini/32/4376_2.png) [@vito.gamberini](https://discourse.cmake.org/u/vito.gamberini)
#### Post date: [July 16, 2026, 5:02pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/9 "2026-07-16T17:02:44Z")

</div>

Extremely odd that the GCC scanner is throwing an error on `-stdlib=libstdc++`. You can open an issue with an MRE but this smells like a compiler bug if the scanner really can’t handle the stdlib argument under some conditions.

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 5:06pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/10 "2026-07-16T17:06:09Z")

</div>

not sure if the GCC was right build in docker?  
what is the filename of the GCC scanner?

```docker
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
# Matthias Kretz <m.kretz@gsi.de>

FROM ghcr.io/mattkretz/cplusplus-ci/gcc15

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get install -y --no-install-recommends \
    autoconf2.69 dwz lzma xz-utils libzstd-dev zlib1g-dev systemtap-sdt-dev \
    binutils:native gettext nvptx-tools amdgcn-tools-18 \
    texinfo sharutils procps netbase libisl-dev libmpc-dev libmpfr-dev libgmp-dev lib32z1-dev libx32z1-dev && \
    apt-get clean && \
    mkdir -p /root/gcc-16/obj && \
    cd /root/gcc-16 && \
    curl -L https://github.com/gcc-mirror/gcc/archive/master.tar.gz \
    | tar -xz --strip-components=1 && \
    mkdir /root/binutils && cd /root/binutils && \
    curl -L https://sourceware.org/pub/binutils/releases/binutils-2.45.tar.gz \
    | tar -xz --strip-components=1 && \
    cd /root/gcc-16 && \
    ln -s ../binutils/bfd ../binutils/gas ../binutils/binutils ../binutils/ld ../binutils/libctf \
       ../binutils/libsframe ../binutils/opcodes . && \
    cd /root/gcc-16/obj && \
    ../configure --enable-languages=c,c++,lto --prefix=/opt/gcc-16 --enable-checking=release --disable-bootstrap && \
    make BOOT_CFLAGS=-march=x86-64-v3 -j3 && \
    make -j3 install-strip && \
    update-alternatives --install /usr/bin/gcc-16 gcc-16 /opt/gcc-16/bin/gcc 160 --slave /usr/bin/g++-16 g++-16 /opt/gcc-16/bin/g++ && \
    update-alternatives --install /usr/bin/gcc gcc /opt/gcc-16/bin/gcc 160 --slave /usr/bin/g++ g++ /opt/gcc-16/bin/g++ && \
    cd /root && rm -rf gcc-16 && \
    apt-get purge --autoremove -y \
    libzstd-dev zlib1g-dev systemtap-sdt-dev \
    libisl-dev libmpc-dev libmpfr-dev libgmp-dev lib32z1-dev libx32z1-dev

# NOTE: pipx ensurepath -> appends /root/.local/bin to the PATH environment variable.
ENV PATH="/root/.local/bin:${PATH}"

RUN pipx install cmake && \
    pipx install --include-deps cmake-format && \
    pipx install codespell && \
    pipx install conan && \
    pipx install gcovr && \
    pipx install gersemi && \
    pipx install ninja && \
    pipx install pre-commit && \
    pipx install uv

RUN sed -i \
    's#\.\./include/c++#/opt/gcc-16/include/c++#' \
    /opt/gcc-16/lib64/libstdc++.modules.json

WORKDIR /home/builder/workdir

```

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 5:27pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/11 "2026-07-16T17:27:45Z")

</div>

It was my fault; now it works with GCC too:

```diff
root@cd8acd0382d0:/home/builder/workdir# git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32958a2..094e6d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,8 +64,10 @@ if(CMAKE_GENERATOR STREQUAL "Ninja" AND FMT_USE_MODULES)
         CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
         AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0
     )
- add_compile_options(-stdlib=libstdc++)
- add_link_options(-stdlib=libstdc++)
+ if(APPLE)
+ add_compile_options(-stdlib=libstdc++)
+ add_link_options(-stdlib=libstdc++)
+ endif()
     endif()
 
     # Tell CMake that we explicitly want `import std`.

```

---

<div class="post-metadata">

### Author: ![vito.gamberini](https://discourse.cmake.org/user_avatar/discourse.cmake.org/vito.gamberini/32/4376_2.png) [@vito.gamberini](https://discourse.cmake.org/u/vito.gamberini)
#### Post date: [July 16, 2026, 5:29pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/12 "2026-07-16T17:29:17Z")

</div>

For clarity, GCC doesn’t have a separate scanner binary. GCC and MSVC use the compiler as a scanner.

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 16, 2026, 5:32pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/13 "2026-07-16T17:32:11Z")

</div>

> [@vito.gamberini](#):
>
> You can open an issue with an MRE but this smells like a compiler bug if the scanner really can’t handle the stdlib argument under some conditions.

Do you mean a `CMake` issue?

---

<div class="post-metadata">

### Author: ![vito.gamberini](https://discourse.cmake.org/user_avatar/discourse.cmake.org/vito.gamberini/32/4376_2.png) [@vito.gamberini](https://discourse.cmake.org/u/vito.gamberini)
#### Post date: [July 16, 2026, 8:04pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/14 "2026-07-16T20:04:22Z")

</div>

If you think it’s something CMake is doing wrong, yes, I mean a CMake issue. If you can isolate it to “gcc isn’t accepting this combination of command line flags, which I think it should”; then it’s a GCC bug and goes to their tracker.

---

<div class="post-metadata">

### Author: ![ClausKlein](https://discourse.cmake.org/user_avatar/discourse.cmake.org/clausklein/32/352_2.png) [@ClausKlein](https://discourse.cmake.org/u/ClausKlein)
#### Post date: [July 17, 2026, 4:37pm UTC](https://discourse.cmake.org/t/cxx-modules-import-std-does-still-not-work-on-linux-with-clang/15262/15 "2026-07-17T16:37:13Z")

</div>

Done: [cmake/cmake#27962](https://gitlab.kitware.com/cmake/cmake/-/work_items/27962)
