Portál AbcLinuxu, 3. května 2025 09:35
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.