`other.test_cmake_cxx_import_std` fails on CMake 3.30–4.0.2 due to missing `CMAKE_EXPERIMENTAL_CXX_IMPORT_STD` UUIDs

Đang mở Phù hợp với người mới
#28,160 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@subhaushsingh đang làm issue này rồi.

Từ ngày 4/11/2026.

  • #28165 của @subhaushsingh — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
85/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
cmake, cpp
Lĩnh vực
build-system, testing

Hướng nghiên cứu

Đọc test/cmake/cxx_import_std/CMakeLists.txt và so sánh các nhánh phiên bản CMake trong tệp với các khoảng phiên bản trong issue. Cập nhật lựa chọn UUID thử nghiệm cho CMake 3.30–3.31 và 4.0.0–4.0.2, sau đó chạy other.test_cmake_cxx_import_std trong test/test_other.py với các phiên bản CMake đó. Hoàn tất khi bài kiểm thử cấu hình và biên dịch thành công trên các phiên bản bị ảnh hưởng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

I found this when testing on a VM with a newer version of CMake than what we are currently testing:

Description

cmake/Modules/Platform/Emscripten.cmake supports CMAKE_CXX_MODULE_STD on CMake >= 3.30 (added in #27065), and other.test_cmake_cxx_import_std in test/test_other.py runs whenever CMake >= (3, 30) is detected.

However, test/cmake/cxx_import_std/CMakeLists.txt only sets CMAKE_EXPERIMENTAL_CXX_IMPORT_STD for CMake >= 4.3.0 and 4.0.3..4.2.x:

cmake_minimum_required(VERSION 3.30)

set(CMAKE_CXX_MODULE_STD ON)

if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.3.0)
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 451f2fe2-a8a2-47c3-bc32-94786d8fc91b)
else()
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD d0edc3af-4c50-42ea-a356-e2862fe7a444)
endif()

Because CircleCI's Linux Docker image (emscripten/emscripten-ci:jammy.v2) has CMake 3.22.1 and test_cmake_cxx_import_std is not marked @crossplatform, the test is currently skipped on CircleCI. On environments with CMake 3.30–3.31 (such as Ubuntu 24.04 / GitHub Actions ubuntu-latest with CMake 3.31.6) or CMake 4.0.0–4.0.2, CMake rejects the UUID and disables import std:

CMake Warning (dev) at /usr/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake:248 (message):
  CMAKE_EXPERIMENTAL_CXX_IMPORT_STD is set to incorrect value
  "d0edc3af-4c50-42ea-a356-e2862fe7a444".  See `Help/dev/experimental.rst`
  for CMake's C++ `import std` support.
...
CMake Error in CMakeLists.txt:
  The "CXX_MODULE_STD" property on the target "cxx_import_std23" requires
  that the "__cmake_cxx23" target exist, but it was not provided by the
  toolchain.
...
test/cmake/cxx_import_std/main.cpp:1:8: fatal error: module 'std' not found
    1 | import std;
      | ~~~~~~~^~~
Proposed Fix

Update test/cmake/cxx_import_std/CMakeLists.txt to include the experimental gate UUIDs for CMake 3.30.0–3.31.x (0e5b6991-d74f-4b3d-a41c-cf096e0b2508) and CMake 4.0.0–4.0.2 (a9e1cf81-9932-4810-974b-6eccaf14e457):

if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.3.0)
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 451f2fe2-a8a2-47c3-bc32-94786d8fc91b)
elseif(CMAKE_VERSION VERSION_GREATER_EQUAL 4.0.3)
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD d0edc3af-4c50-42ea-a356-e2862fe7a444)
elseif(CMAKE_VERSION VERSION_GREATER_EQUAL 4.0.0)
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD a9e1cf81-9932-4810-974b-6eccaf14e457)
else()
  set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 0e5b6991-d74f-4b3d-a41c-cf096e0b2508)
endif()
Ngôn ngữ chính
C++
Star
27.8k
Fork
3.6k
Merge trung bình
1 ngày 6 giờ
Pull request đã merge (30 ngày)
181

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của emscripten-core/emscripten

Tất cả issue của emscripten-core/emscripten

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.