[CMake] Problem when using variable_watch with Visual Studio generator in 3.4.1
David Cole
DLRdave at aol.com
Thu Dec 10 06:58:46 EST 2015
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/33909d67/attachment-0001.html>
More information about the CMake
mailing list