Skip to content

How to know if the installed project is compiled with CXX_MODULE support? #408

Description

@ClausKlein
/Users/clausklein/Workspace/cpp/beman-project/exemplar/examples
bash-5.3$ CXX=g++-15 cmake -G Ninja -S . -B build --fresh 
-- The CXX compiler identification is GNU 15.2.0
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/bin/g++-15 - skipped
-- Detecting CXX compile features
CMake Warning (dev) at /usr/local/share/cmake/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):
  /usr/local/share/cmake/Modules/CMakeDetermineCompilerSupport.cmake:110 (cmake_cxx_find_modules_json)
  /usr/local/share/cmake/Modules/CMakeTestCXXCompiler.cmake:83 (CMAKE_DETERMINE_COMPILER_SUPPORT)
  CMakeLists.txt:7 (project)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Detecting CXX compile features - done
-- Looking for __cpp_lib_ranges
-- Looking for __cpp_lib_ranges - not found
CMake Warning at CMakeLists.txt:26 (message):
  Missing range support! Skip: identity_as_default_projection


Examples to be built: identity_direct_usage
-- Configuring done (1.2s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/build
bash-5.3$ cd -
/Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/build
bash-5.3$ ninja clean
[1/1] Cleaning all built files...
Cleaning... 0 files.
bash-5.3$ ninja -v
[1/10] /usr/local/bin/g++-15  -isystem /Users/clausklein/.local/include -std=gnu++23 -fmodule-only -E -x c++ /Users/clausklein/.local/share/beman.exemplar/modules/include/beman/exemplar/exemplar.cppm -MT CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.ddi -MD -MF CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.ddi -fdeps-target=CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi -fdeps-format=p1689r5 -o CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.ddi.i
[2/10] /usr/local/bin/g++-15   -std=gnu++23 -E -x c++ /usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc -MT CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc.o.ddi -MD -MF CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc.o.ddi -fdeps-target=CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc.o -fdeps-format=p1689r5 -o CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.compat.cc.o.ddi.i
[3/10] /usr/local/bin/g++-15   -std=gnu++23 -E -x c++ /usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc -MT CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.ddi -MD -MF CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.ddi -fdeps-target=CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o -fdeps-format=p1689r5 -o CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.ddi.i
[4/10] /usr/local/bin/cmake -E cmake_ninja_dyndep --tdi=CMakeFiles/__cmake_cxx_std_23.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc --dd=CMakeFiles/__cmake_cxx_std_23.dir/CXX.dd @CMakeFiles/__cmake_cxx_std_23.dir/CXX.dd.rsp
[5/10] /usr/local/bin/cmake -E cmake_ninja_dyndep --tdi=CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc --dd='CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/CXX.dd' @'CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/CXX.dd'.rsp
[6/11] /usr/local/bin/g++-15  -isystem /Users/clausklein/.local/include -std=gnu++23 -E -x c++ /Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/identity_direct_usage.cpp -MT CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.ddi -MD -MF CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.ddi.d -fmodules-ts -fdeps-file=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.ddi -fdeps-target=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o -fdeps-format=p1689r5 -o CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.ddi.i
[7/11] /usr/local/bin/cmake -E cmake_ninja_dyndep --tdi=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc --dd=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/CXX.dd @CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/CXX.dd.rsp
[8/11] ccache /usr/local/bin/g++-15   -std=gnu++23 -MD -MT CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o -MF CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/__cmake_cxx_std_23.dir/usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc.o -c /usr/local/Cellar/gcc/15.2.0_1/include/c++/15/bits/std.cc
[9/11] /usr/local/bin/g++-15  -isystem /Users/clausklein/.local/include -std=gnu++23 -fmodule-only -MD -MT 'CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi' -MF CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.d -fmodules-ts -fmodule-mapper=CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi.modmap -MD -fdeps-format=p1689r5 -x c++ -o 'CMakeFiles/beman__exemplar@synth_1a505f9e7846.dir/6c7a5fd0604b.bmi' -c /Users/clausklein/.local/share/beman.exemplar/modules/include/beman/exemplar/exemplar.cppm
[10/11] ccache /usr/local/bin/g++-15  -isystem /Users/clausklein/.local/include -std=gnu++23 -MD -MT CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o -MF CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o -c /Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/identity_direct_usage.cpp
FAILED: [code=1] CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o 
ccache /usr/local/bin/g++-15  -isystem /Users/clausklein/.local/include -std=gnu++23 -MD -MT CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o -MF CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/beman.exemplar.examples.identity_direct_usage.dir/identity_direct_usage.cpp.o -c /Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/identity_direct_usage.cpp
/Users/clausklein/Workspace/cpp/beman-project/exemplar/examples/identity_direct_usage.cpp:7:1: fatal error: unknown compiled module interface: no such module
    7 | import std;
      | ^~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
bash-5.3$ 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions