[cmake-developers] [CMake] CMake 2.8.3-rc1 ready for testing!
Alexander Neundorf
neundorf at kde.org
Sat Sep 25 14:35:31 EDT 2010
On Wednesday 15 September 2010, David Cole wrote:
> I am happy to announce that CMake 2.8.3 has entered the release
> candidate stage! You can find the source and binaries here:
> http://www.cmake.org/files/v2.8/?C=M;O=D
>
> Following is the list of changes in this release. (If you notice
> something missing please let me know and I will add it to the official
> release when 2.8.3 is finalized.)
>
> Please try this version of CMake on your projects and report any
> issues to the list or the bug tracker.
>
> Happy building!
>
> -Dave
>
>
> Changes in CMake 2.8.3-rc1 (since 2.8.2)
> ----------------------------------------
> Alex Neundorf (39):
> fix build on SUSE 11.2 in cmcurl due to ssize_t
> -add an additional name for finding libtiff on Windows
> -fix typo in docs of deprecated MacroAddFileDependencies.cmake
> add 2nd, more powerful mode to find_package_handle_standard_args()
This one unfortunately introduces a compatiblity problem :-/
The old mode looks like:
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby DEFAULT_MSG ${_RUBY_REQUIRED_VARS})
with the new mode this changed to:
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby REQUIRED_VARS ${_RUBY_REQUIRED_VARS}
VERSION_VAR RUBY_VERSION )
This change itself doesn't introduce incompatibilities.
But, in KDE 4.0.x, 4.1.x (I think these two don't really matter, too old) and
in 4.5.0 and 4.5.1 (i.e. the two most recent releases) we have a copy of
FindPackageHandleStandardArgs.cmake.
The version in 4.5.0/4.5.1 doesn't have the new extended mode of FPHSA() yet.
So, what is happens is this: when cmake runs, it loads e.g. FindRuby.cmake
from CMake, which calls FPHSA() in the new mode, but the
INCLUDE(FindPackageHandleStandardArgs)
loads the file from kdelibs/cmake/modules/, not the one from cmake ->
breakage, because KDE's version doesn't recognize the REQUIRED_VARS keyword.
For 4.5.2 I added the current version of FindPackageHandleStandardArgs.cmake
to kdelibs/cmake/modules/, so this will work again with the 4.5.2 release of
KDE (should be in one or two weeks).
But cmake >= 2.8.3 and KDE 4.5.0/4.5.1 will be incompatible.
The other option would be to make sure that
INCLUDE(FindPackageHandleStandardArgs)
when used in cmake's own module would always load
FindPackageHandleStandardArgs.cmake from cmake, i.e. code like:
GET_FILENAME_COMPONENT(_currentDir "${CMAKE_CURRENT_LIST_FILE}" PATH)
INCLUDE("${_currentDir}/FindPackageHandleStandardArgs.cmake")
Should all
INCLUDE(FindPackageHandleStandardArgs)
in all find-modules from cmake be changed to this ?
Or should maybe a new option be added to include() like
include(FindPackageHandleStandardArgs CURRENT_DIR) ?
This is actually something which is necessary relatively often, so it might
make sense to add this option, and then all find-modules in cmake could be
changed to use this.
What do you think ?
Alex
More information about the cmake-developers
mailing list