mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-12-26 03:19:49 +01:00
Installation: recommend Clang 17 for best libc++ compatibility
Clang/libc++ 16 requires CXXFLAGS += -fexperimental-library Clang < 16 fails with libc++ >= 16: In file included from ../src/protocols/GlobalShortcuts.cpp:1: In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1: In file included from ../src/protocols/../Compositor.hpp:3: In file included from /usr/include/c++/v1/memory:898: In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31: /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'SShortcutClient' return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/protocols/GlobalShortcuts.cpp:56:34: note: in instantiation of function template specialization 'std::make_unique<SShortcutClient, wl_client *&>' requested here m_vClients.emplace_back(std::make_unique<SShortcutClient>(client)); ^ ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit copy constructor) not viable: cannot convert argument of incomplete type 'wl_client *' to 'const SShortcutClient' for 1st argument struct SShortcutClient { ^ ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit move constructor) not viable: cannot convert argument of incomplete type 'wl_client *' to 'SShortcutClient' for 1st argument ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided In file included from ../src/protocols/XDGOutput.cpp:1: In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1: In file included from ../src/protocols/../Compositor.hpp:3: In file included from /usr/include/c++/v1/memory:898: In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31: /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'SXDGOutput' return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/protocols/XDGOutput.cpp:79:62: note: in instantiation of function template specialization 'std::make_unique<SXDGOutput, CMonitor *const &>' requested here SXDGOutput* pXDGOutput = m_vXDGOutputs.emplace_back(std::make_unique<SXDGOutput>(PMONITOR)).get(); ^ ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'CMonitor *const' to 'const SXDGOutput' for 1st argument struct SXDGOutput { ^ ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'CMonitor *const' to 'SXDGOutput' for 1st argument ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided In file included from ../src/render/decorations/DecorationPositioner.cpp:1: In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1: In file included from ../src/render/decorations/../../Compositor.hpp:3: In file included from /usr/include/c++/v1/memory:898: In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31: /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'CDecorationPositioner::SWindowPositioningData' return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/render/decorations/DecorationPositioner.cpp:80:67: note: in instantiation of function template specialization 'std::make_unique<CDecorationPositioner::SWindowPositioningData, CWindow *&, IHyprWindowDecoration *&>' requested here const auto DATA = m_vWindowPositioningDatas.emplace_back(std::make_unique<CDecorationPositioner::SWindowPositioningData>(pWindow, pDecoration)).get(); ^ ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided struct SWindowPositioningData { ^ ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 2 were provided ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 2 were provided Clang >= 16 fails with libc++ < 16: In file included from ../src/pch/pch.hpp:1: In file included from ../src/Compositor.hpp:7: In file included from ../src/defines.hpp:2: ../src/debug/Log.hpp:60:35: error: call to consteval function 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::basic_format_string<char[18]>' is not a constant expression logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds()); ^ /usr/include/c++/v1/format:483:46: note: initializer of '__types_' is not a constant expression _Context{__types_.data(), __handles_.data(), sizeof...(_Args)}); ^ ../src/debug/Log.hpp:60:35: note: in call to 'basic_format_string("{:%H}:{:%M}:{:%S}")' logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds()); ^ /usr/include/c++/v1/format:495:63: note: declared here static constexpr array<__format::__arg_t, sizeof...(_Args)> __types_{ ^ In file included from ../src/pch/pch.hpp:1: In file included from ../src/Compositor.hpp:7: In file included from ../src/defines.hpp:1: In file included from ../src/includes.hpp:149: In file included from ../src/helpers/Vector2D.hpp:4: /usr/include/c++/v1/format:496:7: error: call to deleted function '__determine_arg_t' __format::__determine_arg_t<_Context, remove_cvref_t<_Args>>()...}; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/v1/format:483:37: note: in instantiation of static data member 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::__types_' requested here _Context{__types_.data(), __handles_.data(), sizeof...(_Args)}); ^ ../src/debug/Log.hpp:60:35: note: in instantiation of function template specialization 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::basic_format_string<char[18]>' requested here logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds()); ^ /usr/include/c++/v1/__format/format_arg_store.h:153:19: note: candidate function [with _Context = std::__format::__compile_time_basic_format_context<char>, _Tp = std::chrono::duration<long, std::ratio<3600>>] has been explicitly deleted consteval __arg_t __determine_arg_t() = delete; ^ /usr/include/c++/v1/__format/format_arg_store.h:147:19: note: candidate function [with _Context = std::__format::__compile_time_basic_format_context<char>, _Tp = std::chrono::duration<long, std::ratio<3600>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:41:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:40:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, _Bool>' evaluated to false template <class, same_as<bool> _Tp> ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, _Bool>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, _Bool>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:47:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:46:27: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, typename __compile_time_basic_format_context<char>::char_type>' evaluated to false template <class _Context, same_as<typename _Context::char_type> _Tp> ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, char>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, char>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:53:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _CharT = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:52:12: note: because 'same_as<typename __compile_time_basic_format_context<char>::char_type, wchar_t>' evaluated to false requires(same_as<typename _Context::char_type, wchar_t> && same_as<_CharT, char>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<char, wchar_t>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<char, wchar_t>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:60:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:59:18: note: because 'std::chrono::duration<long, std::ratio<3600>>' does not satisfy '__libcpp_signed_integer' template <class, __libcpp_signed_integer _Tp> ^ /usr/include/c++/v1/__concepts/arithmetic.h:44:35: note: because '__libcpp_is_signed_integer<duration<long, ratio<3600> > >::value' evaluated to false concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:75:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:74:18: note: because 'std::chrono::duration<long, std::ratio<3600>>' does not satisfy '__libcpp_unsigned_integer' template <class, __libcpp_unsigned_integer _Tp> ^ /usr/include/c++/v1/__concepts/arithmetic.h:42:37: note: because '__libcpp_is_unsigned_integer<duration<long, ratio<3600> > >::value' evaluated to false concept __libcpp_unsigned_integer = __libcpp_is_unsigned_integer<_Tp>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:90:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:89:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, float>' evaluated to false template <class, same_as<float> _Tp> ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, float>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, float>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:94:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:93:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, double>' evaluated to false template <class, same_as<double> _Tp> ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, double>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, double>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:98:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:97:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, long double>' evaluated to false template <class, same_as<long double> _Tp> ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, long double>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, long double>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:105:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:104:12: note: because 'same_as<typename __compile_time_basic_format_context<char>::char_type *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false requires(same_as<typename _Context::char_type*, _Tp> || same_as<const typename _Context::char_type*, _Tp>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<char *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<char *, duration<long, ratio<3600> > >::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:104:59: note: and 'same_as<const typename __compile_time_basic_format_context<char>::char_type *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false requires(same_as<typename _Context::char_type*, _Tp> || same_as<const typename _Context::char_type*, _Tp>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<const char *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<const char *, duration<long, ratio<3600> > >::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:112:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:111:12: note: because 'is_array_v<std::chrono::duration<long, std::ratio<3600> > >' evaluated to false requires(is_array_v<_Tp> && same_as<_Tp, typename _Context::char_type[extent_v<_Tp>]>) ^ /usr/include/c++/v1/__format/format_arg_store.h:120:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:118:64: note: because substituted constraint expression is ill-formed: no type named 'value_type' in 'std::chrono::duration<long, std::ratio<3600>>' requires(same_as<typename _Context::char_type, typename _Tp::value_type> && ^ /usr/include/c++/v1/__format/format_arg_store.h:129:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:127:59: note: because substituted constraint expression is ill-formed: no type named 'value_type' in 'std::chrono::duration<long, std::ratio<3600>>' same_as<typename _Context::char_type, typename _Tp::value_type> && ^ /usr/include/c++/v1/__format/format_arg_store.h:136:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Ptr = remove_cvref_t<duration<long, ratio<3600, 1>>>] consteval __arg_t __determine_arg_t() { ^ /usr/include/c++/v1/__format/format_arg_store.h:135:12: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, void *>' evaluated to false requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, void *>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, void *>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:135:36: note: and 'same_as<std::chrono::duration<long, std::ratio<3600> >, const void *>' evaluated to false requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, const void *>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, const void *>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^ /usr/include/c++/v1/__format/format_arg_store.h:135:66: note: and 'same_as<std::chrono::duration<long, std::ratio<3600> >, nullptr_t>' evaluated to false requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>) ^ /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, std::nullptr_t>' evaluated to false concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; ^ /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, std::nullptr_t>::value' evaluated to false concept __same_as_impl = _IsSame<_Tp, _Up>::value; ^
This commit is contained in:
parent
ac1ba73ad9
commit
44a506dbaa
1 changed files with 3 additions and 3 deletions
|
@ -201,9 +201,9 @@ wlroots installed, you can make sure you have them by installing wlroots
|
||||||
separately (Hyprland doesn't mind)
|
separately (Hyprland doesn't mind)
|
||||||
|
|
||||||
Also note that Hyprland uses the C++23 standard, so both your compiler
|
Also note that Hyprland uses the C++23 standard, so both your compiler
|
||||||
and your C++ library has to support that (`gcc>=13.0.0` or `clang>=15`).
|
and your C++ library has to support that (`gcc>=13.0.0` or `clang>=17`).
|
||||||
On Clang-based systems libc++ may be used by default, so until libc++
|
On Clang-based systems with old libc++ by default pass `-stdlib=libstdc++`
|
||||||
supports C++23 you have to pass `-stdlib=libstdc++` or switch to GCC.
|
or switch to GCC.
|
||||||
|
|
||||||
### CMake (recommended)
|
### CMake (recommended)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue