[cmake-developers] [CMake 0015448]: find_path() after mark_as_advanced()
Mantis Bug Tracker
mantis at public.kitware.com
Mon Mar 16 09:32:15 EDT 2015
The following issue has been SUBMITTED.
======================================================================
http://www.cmake.org/Bug/view.php?id=15448
======================================================================
Reported By: nagger
Assigned To:
======================================================================
Project: CMake
Issue ID: 15448
Category: CMake
Reproducibility: always
Severity: minor
Priority: normal
Status: new
======================================================================
Date Submitted: 2015-03-16 14:32 CET
Last Modified: 2015-03-16 14:32 CET
======================================================================
Summary: find_path() after mark_as_advanced()
Description:
It not clear to me if the following is a bug in CMake or just an invalid use:
(I tested this for CMake 2.8.11, 3.0.1 and 3.2.1.)
set(my_path "anyvalue")
find_path(my_path NAMES CMakeLists.txt HINTS ${CMAKE_CURRENT_LIST_DIR})
mark_as_advanced(my_path)
find_path(my_path NAMES CMakeLists.txt HINTS ${CMAKE_CURRENT_LIST_DIR})
message("my_path: '${my_path}'") # my_path is empty here!
1st FIND_PATH() uses only the non-cached variable and does not create the
cache-variable
* this is not described in the docs
** the docs should also describe when and how the cached-variable and the
non-cached variable is read and written
** same goes for all find_*-commands
MARK_AS_ADVANCED() for an undefined cache-variable creates the cache-var with
and empty value and type 'UNDEFINED'
* Is this a bug(?)
* It could use the value of the non-cached variable (if there is one)
* or it should not set the VALUE-property of the cached variable
* or set the type to 'STRING'
The 2nd FIND_PATH() does not use the non-cached variable as in the first call,
but clears the variable without search for the path
* For me this looks like a bug!
Steps to Reproduce:
See attached self-contained CMakeLists.txt with a lot of test cases (T1 .. T8)
and its output at the end of the file.
For me T1 and T2 is a bug, at least it should act as in T5 or in T7.
And T9 also seems like a bug since the docs say:
"[...] the search will not be repeated unless the variable is cleared"
And T8 is inconsistent to the other tests: Its overwriting the cached value
although the variable is set.
Until now I thought that the cached value is always overwritten with the value
of the variable. Is there any reason why it is not?
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2015-03-16 14:32 nagger New Issue
======================================================================
More information about the cmake-developers
mailing list