-
Notifications
You must be signed in to change notification settings - Fork 31
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
[FindGzOgreNext] Support Ogre 3.x and beyond #457
Comments
Wow these are good news! The |
I had a quick look at the ogre-next cmake setup, and it looks like they're not using modern cmake packaging conventions yet. Ideally, they would export the targets and components in a package config in ../share/cmake/. Instead, there's pkg-config files tied together by a big FindOGRE.cmake module in ../lib/../OGRE-Next/cmake. The way I see it there's two possibilities
The upstream FindOGRE module has been around for a long time though, so I'm sure there's a reason the latter hasn't been done before. |
when I wrote the original version using pkg-config many years ago I remember it's because the upstream find ogre module would not always find the correct ogre version or the right ogre plugin libraries. With the new ogre-next name change, things may be different. I think it's a good idea to use the upstream module instead of custom pkg-config code. |
I've created an issue in ogre-next (OGRECave/ogre-next#470). Their FindOGRE file still doesn't work well when both ogre-next and ogre is installed. Pkgconfig on the other hand behaves the same even if ogre is installed alongside ogre-next. I.e., the following prints the same variable definitions even if ogre is installed. cmake_minimum_required(VERSION 3.22)
project(ogre-test)
find_package(PkgConfig REQUIRED)
pkg_check_modules(OGRE_NEXT OGRE-Next REQUIRED)
pkg_check_modules(OGRE_NEXT_HLMS OGRE-Next-Hlms REQUIRED)
pkg_check_modules(OGRE_NEXT_OVERLAY OGRE-Next-Overlay REQUIRED)
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach() Also, the pkgconfig files are installed in a standard location, whereas the FindOGRE.cmake install location is non-standard. |
The ogre-next project has released the next major version (v3.0.0 Eris). It seems that from now on, the project will follow a more conventional semver strategy, where new development is focused on the next major version.
Currently the FindGzOgre2 is hard-coded to find ogre-next releases with major version 2.x.x. It would probably be a good idea to generalize this to FindGzOgreNext. The "USE_NEW_PROJECT_NAME" feature was merged in v2.3.3, so support for v2.3.2 and earlier should probably be left to the existing FindGzOgre2 or dropped completely.
The text was updated successfully, but these errors were encountered: