Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: _agg  
Дата: 08.06.23 02:15
Оценка: :)
привет всем, столкнулся с проблемой, она наверняка как то решается впервые столкнулся с таким. Под Windows, Kubuntu, Ubuntu все ок под Astra Linux CE 2.12.46 (Orel) возникла проблема. В репозитарии есть gcc 6.3.0 и clang 10. Я выбрал clang 10 потому как он поддерживает c++ 17, а мне нужен как раз был тип std::variant из этого стандарта C++, использую cmake при компиляции получаю:
[build] [1/1   0% :: 0.001] Re-running CMake...
[build] -- Enabled С++17 standard
[build] CMAKE_CXX_COMPILER_VERSION = 10.0.0
[build] -- Configuring done
[build] -- Generating done
[build] -- Build files have been written to: /home/gor/Документы/projects/toris2corba/build
[build] [5/6  16% :: 0.351] Building CXX object toris2_server/CMakeFiles/toris2_server.dir/storage.cpp.o
[build] FAILED: toris2_server/CMakeFiles/toris2_server.dir/storage.cpp.o 
[build] /usr/bin/clang++-10  -DACE_LACKS_AUTO_PTR -DTORIS2_EXTERNAL -I../toris2_server/../include -I../toris2_server/../toris_idl -I/home/gor/libraries/ACE_wrappers -I/home/gor/libraries/ACE_wrappers/TAO -O3 -DNDEBUG   -std=gnu++17 -MD -MT toris2_server/CMakeFiles/toris2_server.dir/storage.cpp.o -MF toris2_server/CMakeFiles/toris2_server.dir/storage.cpp.o.d -o toris2_server/CMakeFiles/toris2_server.dir/storage.cpp.o -c ../toris2_server/storage.cpp
[build] In file included from ../toris2_server/storage.cpp:1:
[build] In file included from ../toris2_server/storage.h:3:
[build] In file included from ../toris2_server/storage_types.h:5:
[build] ../toris2_server/../include/tvariant.h:3:10: fatal error: 'variant' file not found
[build] #include <variant>



На просторах интернета нашел вот такую конструкцию вроде как решающую данную проблему, якобы что clang 10 о умолчанию пользует библиотеку шаблонов из gcc и нужно что бы пользовал свою, не знаю правда это или нет, попробовал:
# Using libc++ for clang less 11.0.0
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11.0.0)
target_compile_options(${PROJECT_NAME} INTERFACE -stdlib=libc++)
add_link_options(-stdlib=libc++)
endif ()



Но увы проблема не решилась, если кто-нибудь знает как решить эту проблему буду премного благодарен за помощь.
СПАСИБО КОЛЛЕГИ ! )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.