Portál AbcLinuxu, 26. května 2024 09:07


Dotaz: GCC: C++ 20 a moduly

hermes avatar 2.8.2023 00:10 hermes | skóre: 6 | blog: Elektro | BA
GCC: C++ 20 a moduly
Přečteno: 282×
Odpovědět | Admin

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.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.8.2023 10:10 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: GCC: C++ 20 a moduly
Odpovědět | | Sbalit | Link | Blokovat | Admin
https://github.com/Kitware/CMake/blob/master/Help/dev/experimental.rst
debian.plus@protonmail.com

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.