Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to build on MSYS2 MINGW64 #1291

Open
ghost opened this issue Jun 17, 2023 · 2 comments
Open

Failed to build on MSYS2 MINGW64 #1291

ghost opened this issue Jun 17, 2023 · 2 comments

Comments

@ghost
Copy link

ghost commented Jun 17, 2023

I'm trying to build the master branch. The build almost failed immediately:

$ ninja
[1/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/Animation_xmlHandler.cpp.obj
[2/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/AnimationInstance.cpp.obj
FAILED: cegui/src/CMakeFiles/CEGUIBase-9999.dir/AnimationInstance.cpp.obj
C:\msys64\mingw64\bin\c++.exe -DCEGUIBASE_EXPORTS -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -IC:/msys64/home/Administrator/cegui/build/cegui/include -IC:/msys64/home/Administrator/cegui/cegui/include -isystem C:/msys64/mingw64/include/freetype2 -isystem C:/msys64/mingw64/include/harfbuzz -Wno-attributes  -fsigned-char -Wall -Wextra -Wundef -O3 -DNDEBUG -std=c++14 -MD -MT cegui/src/CMakeFiles/CEGUIBase-9999.dir/AnimationInstance.cpp.obj -MF cegui\src\CMakeFiles\CEGUIBase-9999.dir\AnimationInstance.cpp.obj.d -o cegui/src/CMakeFiles/CEGUIBase-9999.dir/AnimationInstance.cpp.obj -c C:/msys64/home/Administrator/cegui/cegui/src/AnimationInstance.cpp
In file included from C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/Window.h:33,
                 from C:/msys64/home/Administrator/cegui/cegui/src/AnimationInstance.cpp:32:
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:47:130: error: 'is_enum_v' is not a member of 'std'; did you mean 'is_enum'?
   47 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>, class = typename std::enable_if_t<std::is_enum_v<T>>>
      |                                                                                                                                  ^~~~~~~~~
      |                                                                                                                                  is_enum
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:47:130: error: 'is_enum_v' is not a member of 'std'; did you mean 'is_enum'?
   47 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>, class = typename std::enable_if_t<std::is_enum_v<T>>>
      |                                                                                                                                  ^~~~~~~~~
      |                                                                                                                                  is_enum
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:47:140: error: template argument 1 is invalid
   47 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>, class = typename std::enable_if_t<std::is_enum_v<T>>>
      |                                                                                                                                            ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:47:141: error: expected identifier before '>' token
   47 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>, class = typename std::enable_if_t<std::is_enum_v<T>>>
      |                                                                                                                                             ^~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:47:143: error: expected unqualified-id before '>' token
   47 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>, class = typename std::enable_if_t<std::is_enum_v<T>>>
      |                                                                                                                                               ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:279:22: error: 'Flags' does not name a type
  279 | using MouseButtons = Flags<MouseButton, true>;
      |                      ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:47: error: expected template-name before '<' token
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                                               ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:47: error: expected '{' before '<' token
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:47: error: expected unqualified-id before '<' token
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:372:18: error: field 'd_map' has incomplete type 'CEGUI::ModifierKeys'
  372 |     ModifierKeys d_map = 0; // ModifierKey bits that need to be checked
      |                  ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:373:18: error: field 'd_set' has incomplete type 'CEGUI::ModifierKeys'
  373 |     ModifierKeys d_set = 0; // Whether the corresponding key should be pressed or not
      |                  ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:342:29: error: 'keys' has incomplete type
  342 |     bool match(ModifierKeys keys) const
      |                ~~~~~~~~~~~~~^~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h: In member function 'bool CEGUI::ModifierKeyRule::match(CEGUI::ModifierKeys) const':
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:345:32: error: variable 'CEGUI::ModifierKeys violations' has initializer but incomplete type
  345 |         ModifierKeys violations((keys.getMask() ^ d_set.getMask()) & d_map.getMask());
      |                                ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:350:44: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  350 |             if (d_set.hasAll(ModifierKeys::Shift()) && !violations.hasAll(ModifierKeys::Shift()))
      |                                            ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:350:89: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  350 |             if (d_set.hasAll(ModifierKeys::Shift()) && !violations.hasAll(ModifierKeys::Shift()))
      |                                                                                         ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:351:45: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  351 |                 violations -= ModifierKeys::Shift();
      |                                             ^~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:352:44: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  352 |             if (d_set.hasAll(ModifierKeys::Ctrl()) && !violations.hasAll(ModifierKeys::Ctrl()))
      |                                            ^~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:352:88: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  352 |             if (d_set.hasAll(ModifierKeys::Ctrl()) && !violations.hasAll(ModifierKeys::Ctrl()))
      |                                                                                        ^~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:353:45: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  353 |                 violations -= ModifierKeys::Ctrl();
      |                                             ^~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:354:44: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  354 |             if (d_set.hasAll(ModifierKeys::Alt()) && !violations.hasAll(ModifierKeys::Alt()))
      |                                            ^~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:354:87: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  354 |             if (d_set.hasAll(ModifierKeys::Alt()) && !violations.hasAll(ModifierKeys::Alt()))
      |                                                                                       ^~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:355:45: error: incomplete type 'CEGUI::ModifierKeys' used in nested name specifier
  355 |                 violations -= ModifierKeys::Alt();
      |                                             ^~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h: At global scope:
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:426:67: error: 'MouseButtons' has not been declared
  426 |     CursorInputEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons = {}, ModifierKeys modifiers = {});
      |                                                                   ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:435:5: error: 'MouseButtons' does not name a type; did you mean 'MouseButton'?
  435 |     MouseButtons d_buttons;
      |     ^~~~~~~~~~~~
      |     MouseButton
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:437:18: error: field 'd_modifiers' has incomplete type 'CEGUI::ModifierKeys'
  437 |     ModifierKeys d_modifiers;
      |                  ^~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:426:120: error: invalid use of incomplete type 'struct CEGUI::ModifierKeys'
  426 |     CursorInputEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons = {}, ModifierKeys modifiers = {});
      |                                                                                                                        ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:452:66: error: 'MouseButtons' has not been declared
  452 |     CursorMoveEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, const glm::vec2& moveDelta)
      |                                                                  ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:452:101: error: 'modifiers' has incomplete type
  452 |     CursorMoveEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, const glm::vec2& moveDelta)
      |                                                                                        ~~~~~~~~~~~~~^~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:468:67: error: 'MouseButtons' has not been declared
  468 |     MouseButtonEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, MouseButton button, int clickEventOrder = 0)
      |                                                                   ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:468:102: error: 'modifiers' has incomplete type
  468 |     MouseButtonEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, MouseButton button, int clickEventOrder = 0)
      |                                                                                         ~~~~~~~~~~~~~^~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:486:62: error: 'MouseButtons' has not been declared
  486 |     ScrollEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, float delta)
      |                                                              ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:486:97: error: 'modifiers' has incomplete type
  486 |     ScrollEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, float delta)
      |                                                                                    ~~~~~~~~~~~~~^~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:518:18: error: field 'd_modifiers' has incomplete type 'CEGUI::ModifierKeys'
  518 |     ModifierKeys d_modifiers;
      |                  ^~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:513:72: error: invalid use of incomplete type 'struct CEGUI::ModifierKeys'
  513 |     KeyEventArgs(Window* wnd, Key::Scan key, ModifierKeys modifiers = {}) : WindowEventArgs(wnd), d_key(key), d_modifiers(modifiers) {}
      |                                                                        ^
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:513:59: error: 'modifiers' has incomplete type
  513 |     KeyEventArgs(Window* wnd, Key::Scan key, ModifierKeys modifiers = {}) : WindowEventArgs(wnd), d_key(key), d_modifiers(modifiers) {}
      |                                              ~~~~~~~~~~~~~^~~~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:294:20: note: forward declaration of 'struct CEGUI::ModifierKeys'
  294 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
      |                    ^~~~~~~~~~~~
C:/msys64/home/Administrator/cegui/cegui/include/CEGUI/InputEvent.h:610:5: error: 'MouseButtons' does not name a type; did you mean 'MouseButton'?
  610 |     MouseButtons buttons;
      |     ^~~~~~~~~~~~
      |     MouseButton
[3/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/BitmapImage.cpp.obj
[4/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/Affector.cpp.obj
[5/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/Animation.cpp.obj
[6/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/BoundSlot.cpp.obj
[7/253] Building CXX object cegui/src/CMakeFiles/CEGUIBase-9999.dir/AnimationManager.cpp.obj
ninja: build stopped: subcommand failed.
@ghost ghost closed this as completed Jun 17, 2023
@ghost ghost reopened this Jun 17, 2023
@ghost
Copy link
Author

ghost commented Jun 18, 2023

I tried to build the v0 branch, it seems OGRE is required (unlike the master branch where only GLM and PCRE are required). There are full of warnings but I could go a bit further than master branch. It failed at Direct3D9 renderer. As I know we can't use Direct3D on MSYS2 MINGW, only OpenGL and Vulkan are available.

I then tried to build the v0-8 branch, it's the same as v0 branch, full of warnings and also failed at Direct3D9 renderer.

How could I disable the Direct3D renderer?

@niello
Copy link
Contributor

niello commented Aug 12, 2023

I added one possibly missing include to master branch and also fixed C++17 usage, please check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant