On Monday, December 29, 2014 11:35:20 AM Jose Fonseca wrote: > On 22/12/14 22:36, Dylan Baker wrote: > > This adds the locations of the package files to the registry on windows, > > which should allow them to be auto detected by cmake on windows when > > linking against waffle in other projects. > > > > Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> > > --- > > > > This patch is completely untested (I don't have access to a windows > > development machine, nor do I want to maintain one), I've sent this as a > > courtesy to windows users, and hopefully it can point an interested part > > in the correct direction. > > > > Note that this installs into the local machine registry, and there is > > also the option of using local user registry instead, and that can be > > done by changing waffle to use export(), though I'm not exactly sure how > > that works either > > > > CMakeLists.txt | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/CMakeLists.txt b/CMakeLists.txt > > index 729ebc1..0ac2d4b 100644 > > --- a/CMakeLists.txt > > +++ b/CMakeLists.txt > > @@ -182,6 +182,16 @@ install( > > COMPONENT Devel > > ) > > > > +# If running on windows add waffle to the registry so it can be auto > > detected > > +# by consuming projects > > +if (WIN32) > > This will break cross-compiling from Linux to Windows (via MinGW), > because "WIN32" is true. > > Replacing it with > > if (WIN32 AND NOT CMAKE_CROSSCOMPILING) > > should do the trick. > > > > + execute_process( > > + COMMAND "REG ADD > > HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\Waffle /v Waffle-1 /t > > REG_SZ /d ${ConfigPackageLocation} /f" > > I suspect this will fail when there are spaces in the path (e.g., when > waffle is in "C:\Program Files\..." > > > > + ERROR_QUIET > > + OUTPUT_QUIET > > + ) > > +endif () > > Also I believe execute_process() will execute the command when > configuring -- not when building --, or even better, not when installing. > > > > > I'm not sure this is a great idea overall. Are any other packages doing > anything like this? It all seems very non-standard, so I wonder if this > will really simplify things or be too surprising.
I can't say whether it is a good idea or not, it's suggested by the cmake documentation as the "right" way to do things on windows. I don't have a strong opinion either way, and, like you, I doubt this works correctly in it's current form. I provided mostly as a way to say "hey, you can do this if you want", but I no problem dropping it. > > > FWIW, IMO the best way of finding things with CMake on Windows is using > the `-C` cmake option. > > For example, this is part of my MSVC Cmake cache: > > $ cat msvc32/Cache.cmake > set (CMAKE_ASM_MASM_COMPILER "${CMAKE_CURRENT_LIST_DIR}/masm/ml.exe" > CACHE FILEPATH "" FORCE) > > set (GLEXT_INCLUDE_DIR "H:/noarch/glext" CACHE PATH "" FORCE) > > set (GLEW_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/glew/include" CACHE > PATH "" FORCE) > set (GLEW_glew_LIBRARY "${CMAKE_CURRENT_LIST_DIR}/glew/lib/glew32.lib" > CACHE FILEPATH "" FORCE) > > set (GLFW_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/glfw/include" CACHE > PATH "" FORCE) > set (GLFW_LIBRARY "${CMAKE_CURRENT_LIST_DIR}/glfw/lib/glfw32.lib" CACHE > FILEPATH "" FORCE) > > set (GLUT_INCLUDE_DIR "H:/msvc32/freeglut/include" CACHE PATH "" FORCE) > set (GLUT_glut_LIBRARY "H:/msvc32/freeglut/lib/freeglut.lib" CACHE > FILEPATH "" FORCE) > > set (PNG_PNG_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/libpng/include" > CACHE PATH "" FORCE) > set (PNG_LIBRARY "${CMAKE_CURRENT_LIST_DIR}/libpng/lib/libpng.lib" CACHE > FILEPATH "" FORCE) > > set (ZLIB_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/zlib/include" CACHE > PATH "" FORCE) > set (ZLIB_LIBRARY "${CMAKE_CURRENT_LIST_DIR}/zlib/lib/zlib.lib" CACHE > FILEPATH "" FORCE) > > [...] > > > So all I need to do when building any Cmake project is to pass -C > /path/to/Cache.cmake and it will find everything I need. All this is in > a network share so it can be used both from my Windows development > machines and build slaves. > > > Of course, this only works if the cmake project is not too smart for its > own good. > > > Jose
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ waffle mailing list waffle@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/waffle