[CMake] Problem when using variable_watch with Visual Studio generator in 3.4.1

David Cole DLRdave at aol.com
Thu Dec 10 15:13:43 EST 2015


I've got a Debug build of current 'master' on Windows, and the problem is
also evident with my build:


C:\dev\dcole\tmp\variable_watch_problem\b1> "C:\dev\repos\My Tests\cmake
Win32-ninja-cl12-Debug\bin\
cmake.exe" -G Ninja ..
-- The CXX compiler identification is MSVC 18.0.31101.0
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at N:/repos/cmake/Modules/FindPythonInterp.cmake:161 (include):
  include could not find load file:


▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌÷░♣A/Fin
dPackageHandleStandardArgs.cmake
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)


CMake Error at N:/repos/cmake/Modules/FindPythonInterp.cmake:162
(FIND_PACKAGE_HANDLE_STANDARD_ARGS)
:
  Unknown CMake command "FIND_PACKAGE_HANDLE_STANDARD_ARGS".
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)


-- Configuring incomplete, errors occurred!
See also
"C:/dev/dcole/tmp/variable_watch_problem/b1/CMakeFiles/CMakeOutput.log".


On Thu, Dec 10, 2015 at 7:26 AM, Yves Frederix <
yves.frederix+cmake at gmail.com> wrote:

> After commenting out the call there is no error output:
>
>   -- The CXX compiler identification is MSVC 17.0.61030.0
>   -- Check for working CXX compiler using: Visual Studio 11 2012 Win64
>   -- Check for working CXX compiler using: Visual Studio 11 2012 Win64 --
> works
>   -- Detecting CXX compiler ABI info
>   -- Detecting CXX compiler ABI info - done
>   -- Detecting CXX compile features
>   -- Detecting CXX compile features - done
>   -- Found PythonInterp: C:/Python27/python.exe (found version "2.7.10")
>   -- Configuring done
>   -- Generating done
>
>
> Yves
>
> On Thu, Dec 10, 2015 at 12:58 PM, David Cole <DLRdave at aol.com> wrote:
>
>> Out of curiosity, what output do you get (with 3.4.1) when you comment
>> out your call to variable_watch? Do you still get error output, but without
>> strange symbols in it? Or is there no error output in that case?
>>
>>
>> On Thursday, December 10, 2015, Yves Frederix <
>> yves.frederix+cmake at gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I am experiencing problems during the CMake configure step when using
>>> the function variable_watch. Consider the following minimal CMakeLists
>>> file:
>>>
>>>   cmake_minimum_required(VERSION 3.4)
>>>   project(test CXX)
>>>
>>>   function(myhook _variable _access _value _current_list_file _stack)
>>>     if("${_value}" STREQUAL "")
>>>       # Do nothing
>>>     endif()
>>>   endfunction()
>>>
>>>   variable_watch(CMAKE_CURRENT_LIST_DIR myhook)
>>>   find_package(PythonInterp REQUIRED)
>>>
>>>
>>> When configuring on Windows using CMake 3.4.1 with the Visual Studio
>>> generator (I tried both VS2012 and VS2015), the process fails with an
>>> error message (notice the strange symbols at the beginning of the line
>>> mentioning FindPackageMessage.cmake):
>>>
>>>   -- Detecting CXX compile features - done
>>> CMake Error at
>>> C:/Tools/CMake_3.4.1/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:142
>>> (include):
>>>   include could not find load file:
>>>
>>>     L☺
>>> /Tools/CMake_3.4.1/share/cmake-3.4/Modules/FindPackageMessage.cmake
>>> Call Stack (most recent call first):
>>>   C:/Tools/CMake_3.4.1/share/cmake-3.4/Modules/FindPythonInterp.cmake:161
>>> (include)
>>>   CMakeLists.txt:12 (find_package)
>>>
>>>
>>>   CMake Error at
>>>
>>> C:/Tools/CMake_3.4.1/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:379
>>> (FIND_PACKAGE_MESSAGE):
>>>   Unknown CMake command "FIND_PACKAGE_MESSAGE".
>>>   Call Stack (most recent call first):
>>>
>>> C:/Tools/CMake_3.4.1/share/cmake-3.4/Modules/FindPythonInterp.cmake:162
>>> (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
>>>     CMakeLists.txt:12 (find_package)
>>>
>>>
>>> I did some more testing, and the configuration step is successful when:
>>> - using CMake 2.8.12 or 3.4.0
>>> - using 3.4.1 (or older versions) on osx (I did not try linux)
>>> - removing the 'CXX' in the project call or removing the project call
>>> entirely
>>> - removing the check for _value inside the function
>>>
>>> It seems that for some reason adding the watch (which actually only
>>> does read-only access), the contents of the CMAKE_CURRENT_LIST_DIR
>>> variable is messed up somehow. Could I have run into some corner case
>>> behavior here?
>>>
>>> Maybe it is also useful to mention how I ended up in this situation.
>>> My requirement was to run some custom code as the very last step of
>>> the configure process. The solution I found was based on using
>>> variable_watch (see
>>>
>>> http://stackoverflow.com/questions/15760580/execute-command-or-macro-in-cmake-as-last-step-before-configure-step-finishes#15824843
>>> ),
>>> but apparently this is not a very robust solution. Are there possibly
>>> better ways of accomplishing the same thing?
>>>
>>> Thanks!
>>>
>>> Regards,
>>> Yves
>>> --
>>>
>>> Powered by www.kitware.com
>>>
>>> Please keep messages on-topic and check the CMake FAQ at:
>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>
>>> Kitware offers various services to support the CMake community. For more
>>> information on each offering, please visit:
>>>
>>> CMake Support: http://cmake.org/cmake/help/support.html
>>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151210/94a90124/attachment.html>


More information about the CMake mailing list