Updating CEGUI

For help with general CEGUI usage:
- Questions about the usage of CEGUI and its features, if not explained in the documentation.
- Problems with the CMAKE configuration or problems occuring during the build process/compilation.
- Errors or unexpected behaviour.

Moderators: CEGUI MVP, CEGUI Team

TheWanderer
Not too shy to talk
Not too shy to talk
Posts: 31
Joined: Wed Feb 03, 2016 21:58

Updating CEGUI

Postby TheWanderer » Tue Feb 04, 2020 00:41

Hi all,

I've been working on an Ogre application for a few years and and I recently ran into an Ogre bug which forced me to update my version to 1.12.4. I therefore through to myself, why not update CEGUI as well? And so my questions begin...

1) It seems that the last stable version of CEGUI was 0.8.7 back in 2016. Is this accurate? Ogre has had a few changes since then which seem to have made it into the 0-8 branch, but have not been ported back. Does this mean that if I want to use 1.12.4, then I should be using the 0-8 branch of CEGUI?

2) Being the impatient person that I am, I downloaded the 0-8 branch source and tried to create the sln file using CMake. Upon hitting configure, I noticed that GLM is marked as requires in CMakeLists.txt.

Code: Select all

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find GLM (missing: GLM_H_PATH)
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindGLM.cmake:9 (find_package_handle_standard_args)
  CMakeLists.txt:106 (find_package)


Is this a bug? I am using DirectX, so I should'nt need this library. Removing the requirement results in the following error:

Code: Select all

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GLM_H_PATH (ADVANCED)
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/RendererModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/RendererModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/RendererModules/Direct3D11
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/RendererModules/Direct3D11
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/RendererModules/Direct3D11
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/XMLParserModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/XMLParserModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/ImageCodecModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/ImageCodecModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/WindowRendererSets
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/WindowRendererSets
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/WindowRendererSets/Core
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/WindowRendererSets/Core
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/WindowRendererSets/Core
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/ScriptModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/ScriptModules
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/CommonDialogs
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/CommonDialogs
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/cegui/src/CommonDialogs
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/CommonDialogs
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/CommonDialogs
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/CustomShapesDrawing
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/CustomShapesDrawing
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Demo6
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Demo6
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/DragDrop
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/DragDrop
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/EditboxValidation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/EditboxValidation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Fonts
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Fonts
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/FormNavigation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/FormNavigation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/GameMenu
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/GameMenu
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/HelloWorld
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/HelloWorld
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Inventory
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Inventory
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/LookNFeelOverview
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/LookNFeelOverview
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/MenuNavigation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/MenuNavigation
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Minesweeper
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Minesweeper
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/ModelView
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/ModelView
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/RenderEffects
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/RenderEffects
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/RestaurantGame
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/RestaurantGame
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/SVG
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/SVG
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/ScrollablePane
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/ScrollablePane
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/SimpleGameMenu
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/SimpleGameMenu
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/TabControl
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/TabControl
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Text
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Text
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Tree
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Tree
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Widgets
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/Widgets
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/browser
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/browser
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/samples/browser
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/application_templates
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/application_templates
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/datafiles
   used as include directory in directory E:/Code/3rd Party/CEGUI/0-8/cegui-master/datafiles


3) If I stick with 0.8.7, then I have to perform a few fixes (mostly in correctly detecting Ogre). Then, the one error I get is when building is in the OgreRenderModule in Texture.cpp:246 where Ogre::Image::Box is now Ogre::Box. Is this a sufficient fix? Looking at the 0-8 branch, other things have been updated in this render module. Should I just copy the changes in the 0-8 branch and put them in my copy of the 0.8.7 branch?

Thanks for any help!

TheWanderer
Not too shy to talk
Not too shy to talk
Posts: 31
Joined: Wed Feb 03, 2016 21:58

Re: Updating CEGUI

Postby TheWanderer » Thu Feb 06, 2020 22:54

Al'right, so I did some digging to see how GLM was being used and... well, I can take a hint; library has been installed! After this, cmake successfully generates the MSVC2019 sln file. I was then able to compile both the CEGUIBase-9999_Static and CEGUIRapidXMLParser_Static libraries. I did have to keep the CEGUI::String class as a utf8, since it did not compile when I told it to use std::string (is this currently supported?).

In any case, I'm currently building the CEGUIOgreRenderer-9999_Static library and I ran into the following:

- OGRE_STATIC doesn't seem to be exposed nor does it seem to be set anywhere else, so I ended up exposing it myself and setting it.
- CMake is case sensitive, so line 286 of FindOgre.cmake:

Code: Select all

  if (NOT ZLIB_FOUND OR NOT ZZip_FOUND)

should be

Code: Select all

  if (NOT ZLIB_FOUND OR NOT ZZIP_FOUND)

- Same issue with FreeImage

Code: Select all

if (NOT FreeImage_FOUND AND NOT OGRE_CONFIG_FREEIMAGE)

should be

Code: Select all

if (NOT FREEIMAGE_FOUND AND NOT OGRE_CONFIG_FREEIMAGE)

- The OIS section does not set or expose OIS_LIB_STATIC and OIS_LIB_STATIC_DBG
- Same issue as here with respects to detecting OgreVersion. One odd thing about that particular thread is that the fix is submitted to the repository on BitBucket, but that repository is labelled: "This repository is outdated and has been moved to github: https://github.com/cegui/cegui PLEASE ONLY use the github repository". Which one should I actually be using?

Once all the issues above were addressed, I received a few warning concerning deprecated calls, but it appears to have built:

Code: Select all

1>------ Build started: Project: CEGUIOgreRenderer-9999_Static, Configuration: Debug Win32 ------
1>GeometryBuffer.cpp
1>ImageCodec.cpp
1>RenderTarget.cpp
1>Renderer.cpp
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(692,1): warning C4996: 'Ogre::RenderSystem::_setProjectionMatrix': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(244): message : see declaration of 'Ogre::RenderSystem::_setProjectionMatrix'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(694,1): warning C4996: 'Ogre::RenderSystem::_setViewMatrix': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(247): message : see declaration of 'Ogre::RenderSystem::_setViewMatrix'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1167,1): warning C4996: 'Ogre::RenderSystem::_setSceneBlending': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(270): message : see declaration of 'Ogre::RenderSystem::_setSceneBlending'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1263,56): warning C4996: 'Ogre::TextureUnitState::UVWAddressingMode': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreTextureUnitState.h(297): message : see declaration of 'Ogre::TextureUnitState::UVWAddressingMode'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1296,1): warning C4996: 'Ogre::RenderSystem::_setFog': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(263): message : see declaration of 'Ogre::RenderSystem::_setFog'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1333,1): warning C4996: 'Ogre::RenderSystem::_setProjectionMatrix': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(244): message : see declaration of 'Ogre::RenderSystem::_setProjectionMatrix'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1538,1): warning C4996: 'Ogre::RenderSystem::_setTextureAddressingMode': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(563): message : see declaration of 'Ogre::RenderSystem::_setTextureAddressingMode'
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Renderer.cpp(1540,1): warning C4996: 'Ogre::RenderSystem::_setTextureUnitFiltering': was declared deprecated
1>..\..\ThirdParty\Ogre3d\1.12.4\include\OGRE\OgreRenderSystem.h(559): message : see declaration of 'Ogre::RenderSystem::_setTextureUnitFiltering'
1>ResourceProvider.cpp
1>ShaderWrapper.cpp
1>Texture.cpp
1>TextureTarget.cpp
1>WindowTarget.cpp
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Texture.cpp(110,23): warning C4244: 'argument': conversion from 'const float' to 'Ogre::uint', possible loss of data
1>..\ThirdParty\CEGUI\0-8\cegui-master\cegui\src\RendererModules\Ogre\Texture.cpp(110,11): warning C4244: 'argument': conversion from 'const float' to 'Ogre::uint', possible loss of data
1>CEGUIOgreRenderer-9999_Static.vcxproj -> ..\ThirdParty\CEGUI\0-8\Build\MSVC2019\lib\CEGUIOgreRenderer-9999_Staticd.lib
1>Done building project "CEGUIOgreRenderer-9999_Static.vcxproj".
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========


I'm about to try running it, but wanted to update the status of the thread as well as ask my questions. The most important one, I think, is whether I'm using the correct source (the one from github) or whether I should be using the one in BitBucket.

Thanks for reading the wall of text!

User avatar
Ident
CEGUI Team
Posts: 1998
Joined: Sat Oct 31, 2009 13:57
Location: Austria

Re: Updating CEGUI

Postby Ident » Fri Feb 07, 2020 08:27

Github is correct.

Unfortunately I cant make any statement on the Ogre support, it is purely community driven, there were several people making commits. The most up to date branch should be master.
CrazyEddie: "I don't like GUIs"

TheWanderer
Not too shy to talk
Not too shy to talk
Posts: 31
Joined: Wed Feb 03, 2016 21:58

Re: Updating CEGUI

Postby TheWanderer » Fri Feb 07, 2020 20:33

Hey Ident,

Thanks for the information. I'm glad to hear that I at least was working off the correct repository :D .

To round out my questions:

The application I'm working on is intended for commercial release, so I want to make sure that the code I'm using is (relatively) stable. In your opinion, is 0-8 in a good state at the moment (or can you give me a date where it was)? (This is your development branch, so this may not be possible) Or would it be better for me to stick to 0.8.7 and just port back support for the latest version of Ogre?

Random Unrelated Question: What happened to CEGUI::Listbox? I noticed that it disappeared during the merge on Dec 26, 2015.

Thanks again!

User avatar
Ident
CEGUI Team
Posts: 1998
Joined: Sat Oct 31, 2009 13:57
Location: Austria

Re: Updating CEGUI

Postby Ident » Fri Feb 07, 2020 23:07

v0-8 is more stable but if you want to use ogre u should probably try to get default running with whatever Ogre version you use.

I dunno what happened to Listbox off the top off my head, i suggest you go through the history of the merged branch for that file, I am sure there was a good reason for that.
CrazyEddie: "I don't like GUIs"

TheWanderer
Not too shy to talk
Not too shy to talk
Posts: 31
Joined: Wed Feb 03, 2016 21:58

Re: Updating CEGUI

Postby TheWanderer » Sun Feb 09, 2020 00:04

Is default called 'master' on github? It clearly says default next to master (though it's odd, since I see a "Merge with default" on one of the changes ). My original question still stands: Is master also called default? I was trying to find the commit which removed Listbox.h on Dec 26, 2015 but was confused by being in the master branch and it saying "Merged with default". But, I've been working off of master rather than 0-8, which explains some things. :oops:

In any case, I did get it compile with Ogre, so I've been trying to integrate it back to my project. Is there a roadmap somewhere where I can see what the next release of CEGUI is planning? Depending on what's changing, I might move to use 0-8, since, as you stated, it is more stable.

Out of curiosity, what makes default better to work with the newest Ogre rather than 0-8? Or v0 for that matter?

Also, would you like me to submit the fixes mentioned above to the FindOgre.cmake script?

Thanks as always both for you time and answers, Ident :)

User avatar
Ident
CEGUI Team
Posts: 1998
Joined: Sat Oct 31, 2009 13:57
Location: Austria

Re: Updating CEGUI

Postby Ident » Sun Feb 09, 2020 13:06

Sorry I meant "default" not master

"Out of curiosity, what makes default better to work with the newest Ogre rather than 0-8? Or v0 for that matter?"
I think the pull requests were newer, it really depends on who provided what when. There were several different contributors

In order to know more we would have to go back and look at the old PRs, I mostly glanced over them because I cannot say much about the Ogre code that relates to them and see this in the responsibiltiy fo contributors to maintain and develop
CrazyEddie: "I don't like GUIs"

TheWanderer
Not too shy to talk
Not too shy to talk
Posts: 31
Joined: Wed Feb 03, 2016 21:58

Re: Updating CEGUI

Postby TheWanderer » Sun Mar 15, 2020 22:51

I know it's been a while, but I wanted to come back and report that I finally upgraded my application and everything appears to be working (it's been running for less than a day). I ended up using the v0 branch since it kept the same API that I was using before, thus reducing the amount of work which I had to do (I've only had an hour here or there for the past month to work on this).

Out of curiosity, when do you guys foresee releasing a new stable release? Having become more informed about the different branches, I'm curious to see what you guys have planned for the future.

Thank you again for all the information, Ident, and frankly, thanks for continuing to maintain the library. It's been very useful in my application.

User avatar
Ident
CEGUI Team
Posts: 1998
Joined: Sat Oct 31, 2009 13:57
Location: Austria

Re: Updating CEGUI

Postby Ident » Sun Apr 19, 2020 18:50

Some info on that can be found on a related github ticket https://github.com/cegui/cegui/issues/1184
CrazyEddie: "I don't like GUIs"


Return to “Help”

Who is online

Users browsing this forum: No registered users and 8 guests