[CMake] find_package( ITK ) with ITK version 4.8 and cmake 3.9.0-rc6 (3.1+ anyway) is like finding Dory

Brian Davis bitminer at gmail.com
Wed Aug 9 14:27:00 EDT 2017


I am so lost in CMB0054 errors I and internet searches I can't remember why
I wanted Itk-4.8 in the first place.  Here goes:

When using CMake 3.9.0-rc6 or basically 3.1+ (onward) and trying:

        find_package( ITK )

with 4.8 built / installed and receiving:

CMake Warning (dev) at install/lib/cmake/ITK-4.8/ITKTargets.cmake:28 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.

Quoted variables like "" will no longer be dereferenced when the policy is
set to NEW. Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):
install/lib/cmake/ITK-4.8/ITKConfig.cmake:50 (include)
subprojects/ctutil/CMake/ctutil/itk/itk_config.cmake:137 (find_package)
subprojects/ctutil/CMake/ctutil/Findctutil.cmake:224 (itk_config)
CMakeLists.txt:123 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at install/lib/cmake/ITK-4.8/ITKTargets.cmake:36 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.

Quoted variables like "" will no longer be dereferenced when the policy is
set to NEW. Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):
install/lib/cmake/ITK-4.8/ITKConfig.cmake:50 (include)
subprojects/ctutil/CMake/ctutil/itk/itk_config.cmake:137 (find_package)
subprojects/ctutil/CMake/ctutil/Findctutil.cmake:224 (itk_config)
CMakeLists.txt:123 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.


then looking at line 28 in install/lib/cmake/ITK-4.8/ITKTargets.cmake:28

if("${_targetsDefined}" STREQUAL "${_expectedTargets}")


then reading:

https://cmake.org/cmake/help/v3.1/policy/CMP0054.html

I always new CMake was and is broken (language, use, and documentation),
but never such a realization as now.

and bits like

https://cmake.org/pipermail/cmake/2014-December/059317.html
https://cmake.org/cmake/help/v3.1/command/cmake_policy.html#command:cmake_policy

then ...sigh... then trying:

        cmake_policy(PUSH)
        cmake_policy(SET CMP0054 OLD)
        find_package( ITK )
        cmake_policy(POP)

and still getting:

CMake Warning (dev) at install/lib/cmake/ITK-4.8/ITKTargets.cmake:28 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.

and wondering does the cmake_policy push, pop, set do anything here?

I am left wondering who, what, why am I here? Maybe Sigourney Weaver can
help (see title).

from:

https://en.wikipedia.org/wiki/CMake

"CMake development began in 1999 in response to the need for a
cross-platform build environment for the Insight Segmentation and
Registration Toolkit (ITK)"

If only I could get CMake to work with the package it was originally
created to build.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20170809/deda1de7/attachment.html>


More information about the CMake mailing list