[M4] cargoxx build invokes nix+cmake

This commit is contained in:
2026-05-10 00:04:18 +00:00
parent 807158b8cc
commit f6e8699a72
6 changed files with 121 additions and 29 deletions

View File

@@ -59,6 +59,13 @@ auto link_block(std::string_view target_name, std::string_view visibility,
auto emit_header(const manifest::Manifest& m) -> std::string {
return std::format(
"cmake_minimum_required(VERSION 3.30)\n"
"\n"
"# Opt into experimental C++ modules dyndep + `import std;` support.\n"
"# Required until CMake declares these stable.\n"
"set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)\n"
"set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD \"d0edc3af-4c50-42ea-a356-e2862fe7a444\")\n"
"set(CMAKE_CXX_MODULE_STD ON)\n"
"\n"
"project({} LANGUAGES CXX)\n"
"\n"
"# Generated by cargoxx — do not edit.\n"
@@ -67,7 +74,8 @@ auto emit_header(const manifest::Manifest& m) -> std::string {
"# ----- toolchain configuration -----\n"
"set(CMAKE_CXX_STANDARD {})\n"
"set(CMAKE_CXX_STANDARD_REQUIRED ON)\n"
"set(CMAKE_CXX_EXTENSIONS OFF)\n"
"# EXTENSIONS=ON for libc++ std-module compatibility (clang 21).\n"
"set(CMAKE_CXX_EXTENSIONS ON)\n"
"set(CMAKE_CXX_SCAN_FOR_MODULES ON)\n"
"set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n",
m.package.name, edition_to_int(m.package.edition));