CMake policy deprecation warning in itkhdf5
Configure current master with cmake 3.12.1
No deprecation warnings
CMake Warning (dev) at /usr/share/cmake-3.12/Modules/CheckIncludeFileCXX.cmake:69 (message):
Policy CMP0075 is not set: Include file check macros honor
CMAKE_REQUIRED_LIBRARIES. Run "cmake --help-policy CMP0075" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.
CMAKE_REQUIRED_LIBRARIES is set to:
m;dl
For compatibility with CMake 3.11 and below this check is ignoring it.
Call Stack (most recent call first):
Modules/ThirdParty/HDF5/src/itkhdf5/config/cmake_ext_mod/HDFUseCXX.cmake:39 (CHECK_INCLUDE_FILE_CXX)
Modules/ThirdParty/HDF5/src/itkhdf5/CMakeLists.txt:862 (include)
This warning is for project developers. Use -Wno-dev to suppress it.
This is the help policy: cmake --help-policy CMP0075
-------
Include file check macros honor ``CMAKE_REQUIRED_LIBRARIES``.
In CMake 3.12 and above, the
* ``check_include_file`` macro in the ``CheckIncludeFile`` module, the
* ``check_include_file_cxx`` macro in the
``CheckIncludeFileCXX`` module, and the
* ``check_include_files`` macro in the ``CheckIncludeFiles`` module
now prefer to link the check executable to the libraries listed in the
``CMAKE_REQUIRED_LIBRARIES`` variable. This policy provides compatibility
with projects that have not been updated to expect this behavior.
The ``OLD`` behavior for this policy is to ignore ``CMAKE_REQUIRED_LIBRARIES``
in the include file check macros. The ``NEW`` behavior of this policy is to
honor ``CMAKE_REQUIRED_LIBRARIES`` in the include file check macros.
This policy was introduced in CMake version 3.12. CMake version
3.12.1 warns when the policy is not set and uses ``OLD`` behavior.
Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW``
explicitly.
.. note::
The ``OLD`` behavior of a policy is
``deprecated by definition``
and may be removed in a future version of CMake.
Everytime building with cmake 3.12.1
@phcerdan
is this with current master?
If so,
https://github.com/InsightSoftwareConsortium/ITK/commit/2647f883867e0f7472cddb2ed4802b8bebd1a024
may have been clobbered and needs to be re-applied.
@thewtex yes, it was.
The warning is generated in sibling cmake file of the one that set the policy.
@jcfr mentioned to have a look at NO_POLICY_SCOPE
We might need to add here NO_POLICY_SCOPE to that include for the policy to be applied to the top directory, and another NO_POLICY_SCOPE in the warning I raised here.
Or maybe easier to just add in the file which still generates the warning:
if(POLICY CMP0075)
cmake_policy(SET CMP0075 NEW)
endif()
What do you think?
Neat to learn about NO_POLICY_SCOPE. Either approach looks fine :+1:
I am trying to contribute these policy changes to upstream HDF5 directly, created PR in a mirror: https://github.com/live-clones/hdf5/pull/2
I have to figure out how to contribute to their bitbucket
Nice,
I may suggest a syntax like the following:
#-----------------------------------------------------------------------------
if(POLICY CMP0075)
cmake_policy(SET CMP0075 NEW) # CMake 3.12.1: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.
endif()
Thanks @jcfr, updated following your suggestion
@phcerdan @jcfr Thanks for contributing the fix upstream :+1:
According to the HDF5 FAQ, patches are submitted via an email to [email protected] with the content:
VERSION:
HDF5-N.N.N
USER:
[Name and Email Address]
SYNOPSIS:
[Brief description of the problem]
MACHINE / OPERATING SYSTEM:
[Platform and platform version. On Unix platforms please include
the output from "uname -a"]
COMPILER:
[The compiler and compiler version used]
DESCRIPTION:
[Detailed description of problem]
REPEAT BUG BY:
[What you did to get the error; include test program or session
transcript if at all possible. If you include a program, make
sure it depends only on libraries in the HDF distribution, not
on any vendor or third-party libraries. Please be specific;
if we can't reproduce it, we can't fix it. Tell us exactly what
we should see when the program is run. NOTE: It helps us if
the example program is written in C and can be run easily on Unix]
SAMPLE FIX:
[Fix or patch, if you have one]
Sent the mail, cc'ed you.
I will provide a patch for ITK, just in case it is not timely merged.