[Cmake] CMake suggestion - environment variables to help FindXXX.cmake fi les

Wheeler, Frederick W (Research) wheeler at crd . ge . com
Fri, 24 Oct 2003 16:33:40 -0400


I have a suggestion for CMake.  In some situations I run CMake with option
lists like this.

  -DBUILD_VGUI:BOOL=ON \
  -DOPENGL_INCLUDE_DIR:PATH=/home/wheeler/usr/local/include \
 
-DOPENGL_gl_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/li
b \
 
-DOPENGL_glu_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/l
ib \
  -DGLUT_INCLUDE_DIR:PATH=/home/wheeler/usr/local/include \
 
-DGLUT_glut_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/li
b \
  -DGTK_glib_INCLUDE_PATH:PATH=/home/wheeler/usr/local/include \
 
-DGTK_glib_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/lib
\
 
-DGTK_glibconfig_INCLUDE_PATH:PATH=/home/wheeler/usr/local/sparc-sun-solaris
2.7/lib/glib/include \
 
-DGTK_gmodule_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/
lib \
  -DGTK_gtk_INCLUDE_PATH:PATH=/home/wheeler/usr/local/include \
 
-DGTK_gtk_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/lib
\
 
-DGTK_gdk_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/lib
\
  -DGTK_gtkgl_INCLUDE_PATH:PATH=/home/wheeler/usr/local/include \
 
-DGTK_gtkgl_LIBRARY:FILEPATH=/home/wheeler/usr/local/sparc-sun-solaris2.7/li
b \

This is ugly and if OPENGL_INCLUDE_PATH changes to OPENGL_INCLUDE_DIR I have
to track that down.

It would be nice if CMake recognized special new environment variables like:

  CMAKE_INCLUDE_PATH
  CMAKE_LIBRARY_PATH

Each CMake Modules FindXXX.cmake file would look to this env. var also when
trying to track down packages.  There could also be package specific
specializations like,

  CMAKE_GTK_INCLUDE_PATH
  CMAKE_GTK_LIBRARY_PATH
  CMAKE_GLUT_INCLUDE_PATH
  CMAKE_GLUT_LIBRARY_PATH

There would be a pair of these for every FindXXX.cmake file.

I think this would be very easy to do since CMake already knows how to get
at environment variables.  Feature creep might be a danger.  Not sure is
Cmake's environment variable support would currently handle this (the
colons),

  CMAKE_INCLUDE_PATH=/foo:/bar
  CMAKE_LIBRARY_PATH=/foo:/bar

Maybe the FindXXX.cmake files should also look for cache variables with
these exact same names, so one could do this.  Actually, this might be
better then using environment variables?

  cmake -DCMAKE_INCLUDE_PATH=/foo:/bar -DCMAKE_LIBRARY_PATH=/foo:/bar

Regards,
Fred Wheeler