Portál AbcLinuxu, 10. prosince 2025 10:17
Robím si jeden projekt pre microcontrollery, používam tam C++20 a zvažujem použitie nových C++ modulov (s exportami).
Moduly som už chvíľku testoval vo Windowse a MSVC a ani tam to nebolo jednoduché to rozbehnúť.
Lenže teraz môj vývoj prebieha v Linuxe a gcc + CMake + ninja, všetko funguje krásne (aj C++20) jediné čo mi robí problém sú tie neštastné moduly. a zase je to uplne o inom. Moduly potrebuje zapnúť nie len kompilátor, ale aj CMake (kde je to experimentálna featura (od verzie CMake 3.25) a treba to zapnúť Uuid-om ktorý som si vygooglil a ktorý je iný pre každú verziu CMake - fuj). Samozrejme to nestačí. Lebo ani s tými uuid-ami mi to nefunguje. Moj koreňový CMakeLists.txt som upravil takto:
cmake_minimum_required(VERSION 3.26.0)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(
CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -std=c++2a -DESP32=1 -DARDUINO_ARCH_ESP32=1 -DBOARD_HAS_PSRAM -fdiagnostics-color -fmodules-ts -fmodule-header"
)
if(CMAKE_VERSION VERSION_LESS "3.27.0")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
else()
set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "aa1f7df0-828a-4fcd-9afc-2dc80491aca7")
endif()
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(
"Camera3X"
)
ale dostávam chybu:
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly. Missing variable is: CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE CMake Generate step failed. Build files cannot be regenerated correctly. FAILED: build.ninja
Takže mám nastaviť nejakú premennú CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE ale čo konkrétne? Už toho mám plné zuby. Ak niekto používate moduly s GCC, tak mi prosím pošlite váš CMakeLists.txt pre inšpiráciu, v opačnom prípade to vzdám, lebo ozaj asi nemá zmysel používať neodladené experimentálne featury. Vďaka.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.