Под 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 ()



Но увы проблема не решилась, если кто-нибудь знает как решить эту проблему буду премного благодарен за помощь.
СПАСИБО КОЛЛЕГИ ! )
Re: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: LaptevVV Россия  
Дата: 08.06.23 04:15
Оценка:
_>привет всем, столкнулся с проблемой, она наверняка как то решается впервые столкнулся с таким. Под Windows, Kubuntu, Ubuntu все ок под Astra Linux CE 2.12.46 (Orel) возникла проблема. В репозитарии есть gcc 6.3.0 и clang 10. Я выбрал clang 10 потому как он поддерживает c++ 17, а мне нужен как раз был тип std::variant из этого стандарта C++
Силанг 10 староват уже. Там не все фичи включены
_>Но увы проблема не решилась, если кто-нибудь знает как решить эту проблему буду премного благодарен за помощь.
Просто собрать самому свежую версию.
Силанг 15 вполне себе все включает.
На сайте LLVM вполне подробно описано, как самому собрать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отс
От: _agg  
Дата: 08.06.23 05:11
Оценка:
Здравствуйте, LaptevVV, Вы писали:

_>>привет всем, столкнулся с проблемой, она наверняка как то решается впервые столкнулся с таким. Под Windows, Kubuntu, Ubuntu все ок под Astra Linux CE 2.12.46 (Orel) возникла проблема. В репозитарии есть gcc 6.3.0 и clang 10. Я выбрал clang 10 потому как он поддерживает c++ 17, а мне нужен как раз был тип std::variant из этого стандарта C++

LVV>Силанг 10 староват уже. Там не все фичи включены
_>>Но увы проблема не решилась, если кто-нибудь знает как решить эту проблему буду премного благодарен за помощь.
LVV>Просто собрать самому свежую версию.
LVV>Силанг 15 вполне себе все включает.
LVV>На сайте LLVM вполне подробно описано, как самому собрать.

clang 10 поддерживает C++ 17 просто при компиляции берет STL от gcc, нужно как то cmake заставить что бы clang брал свой stl . В других линуксах этого не возникает потому что gcc и clang поддерживают одинаковые фичи, а в Astra Linux сделали так что gcc старый совсем, а clang поддерживает хотя бы c++ 17. В директории /usr/lib/llvm-10/include/c++/v1 находится нужный файл, но при компиляции пытается подключить из /usr/include/c++/6
Отредактировано 08.06.2023 5:21 _agg . Предыдущая версия .
Re: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: Zhendos  
Дата: 08.06.23 05:25
Оценка:
Здравствуйте, _agg, Вы писали:

_>привет всем, столкнулся с проблемой, она наверняка как то решается впервые столкнулся с таким. Под Windows, Kubuntu, Ubuntu все ок под Astra Linux CE 2.12.46 (Orel) возникла проблема. В репозитарии есть gcc 6.3.0 и clang 10. Я выбрал clang 10 потому как он поддерживает c++ 17, а мне нужен как раз был тип std::variant из этого стандарта C++, использую cmake при компиляции получаю:


Не знаю насчет CE, а в репозитории SE был еще gcc-mozilla и там более современный gcc,
и vartiant/optional там есть.
Re[2]: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: _agg  
Дата: 08.06.23 08:48
Оценка: -1
Здравствуйте, Zhendos, Вы писали:

Z>Здравствуйте, _agg, Вы писали:


_>>привет всем, столкнулся с проблемой, она наверняка как то решается впервые столкнулся с таким. Под Windows, Kubuntu, Ubuntu все ок под Astra Linux CE 2.12.46 (Orel) возникла проблема. В репозитарии есть gcc 6.3.0 и clang 10. Я выбрал clang 10 потому как он поддерживает c++ 17, а мне нужен как раз был тип std::variant из этого стандарта C++, использую cmake при компиляции получаю:


Z>Не знаю насчет CE, а в репозитории SE был еще gcc-mozilla и там более современный gcc,

Z>и vartiant/optional там есть.



От операционки я не могу отказаться к сожалению
Re[3]: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отс
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.06.23 09:10
Оценка:
Здравствуйте, _agg, Вы писали:

_>clang 10 поддерживает C++ 17 просто при компиляции берет STL от gcc, нужно как то cmake заставить что бы clang брал свой stl . В других линуксах этого не возникает потому что gcc и clang поддерживают одинаковые фичи, а в Astra Linux сделали так что gcc старый совсем, а clang поддерживает хотя бы c++ 17. В директории /usr/lib/llvm-10/include/c++/v1 находится нужный файл, но при компиляции пытается подключить из /usr/include/c++/6



Если там GCC старый совсем, то где кланг возмет новый STL?
Маньяк Робокряк колесит по городу
Re[3]: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: Zhendos  
Дата: 08.06.23 09:57
Оценка:
Здравствуйте, _agg, Вы писали:

Z>>Не знаю насчет CE, а в репозитории SE был еще gcc-mozilla и там более современный gcc,

Z>>и vartiant/optional там есть.

_>От операционки я не могу отказаться к сожалению


Эээ, причем здесь отказ от ОС?
Если они для SE замороичились с gcc-mozilla, то для CE тоже такой есть,
вот кстати и он:


https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository/pool/main/g/gcc-mozilla/

Или вы пакеты устанавливать не умеет в ОС, или не знаете что пакеты устанавливать можно?
Re: Под Astra Linux CE 2.12.46 (Orel) Clang 10 C++ 17 отсутствует variant
От: PPA Россия http://flylinkdc.blogspot.com/
Дата: 08.06.23 19:30
Оценка:
Здравствуйте, _agg, Вы писали:

_>Но увы проблема не решилась, если кто-нибудь знает как решить эту проблему буду премного благодарен за помощь.

_>СПАСИБО КОЛЛЕГИ ! )

а переключиться в исходниках toris2_server на

#include <boost/variant2/variant.hpp>
using namespace boost::variant2;

не пробовал?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.