[Cmake] Making the cmake FindXXX.cmake files more consistent
Ian Scott
ian.m.scott at stud.man.ac.uk
Fri Sep 6 11:01:58 EDT 2002
Correction
> -----Original Message-----
> From: Ian Scott
> Sent: Friday, September 06, 2002 3:57 PM
> To: 'Sebastien BARRE'; Cmake at Public. Kitware. Com (E-mail)
> Subject: RE: [Cmake] Making the cmake FindXXX.cmake files more
> consistent
>
>
> Sebastien Barre wrote:
> > Would you mind summarizing the new modules guidelines and
> > post that to the
> > list ?
> > I guess it would help maintainers/contributors to keep these
> > modules in a
> > clean state, or add features while trying to be consistent.
>
> Certainly. (I'll copy this into /Modules/readme.txt for the future.)
>
> These are the rules I have tried used to modify many of the
> FindXXX.cmake
> module files. I'm not aware of anywhere I've had to deviate from them.
>
> If you want to disagree with any of them, feel free. But I'd
> be grateful if
> you could upgrade the modified files to fit any changes. (In
> retrospect, I
> wish I had just used XXX_EXE instead of XXX_EXECUTABLE.)
>
> The general usefulness of consistency became apparent when
> the VXL team
> started using CMake. We have to negotiate use of system or
> VXL-provided
> version of JPEG, etc. We are now using copies in VXL, of the
> files in the
> current CMake repository snapshot. We expect to switch over
> to getting them
> from the CMake Modules directory at the 1.6 release.
>
> Please use the following consistent variable names for general use.
>
> XXX_INCLUDE_DIR Where to find xxx.h, etc. If for some reason, you
> really need two paths, then that shouldn't be a problem -
> however, consider
> if you really should have two different FindXXX.cmake files.
> (XXX_INCLUDE_PATH was considered bad because a path includes an actual
> filename.)
> XXX_LIBRARIES The libraries to link against to use
> XXX. These should
> include full paths.
> XXX_DEFINITIONS Definitions to use when compiling code
> that uses XXX.
> This really shouldn't include options such as
> (-DHAS_JPEG)that a client
> source-code file uses to decide whether to #include <jpeg.h>
> XXX_EXECUTABLE Where to find the XXX tool.
> XXX_YYY_EXECUTABLE Where to find the YYY tool that comes with XXX.
> XXX_ROOT_DIR Where to find the base directory of XXX.
> XXX_VERSION_YY Expect Version YY if true. Make sure at
> most one of
> these is ever true.
> XXX_WRAP_YY If False, do not try to use the
> relevent CMake wrapping
> command.
> XXX_YY_FOUND If False, optional YY part of XXX sytem is not
> available.
> XXX_FOUND Set to false, or undefined, if we
> haven't found, or
> don't want to use XXX.
>
> You do not have to provide all of the above variables. You
> should provide
> XXX_FOUND under most circumstances. If XXX is a library, then
> XXX_LIBRARIES, should also be defined, and XXX_INCLUDE_DIR
> should usually be
> defined (I guess libm.a might be an exception)
>
>
> The following names should not usually be used in CMakeLists.txt
^^^
> files, but they
> may be usefully modified in users CMake Cache to control stuff.
>
> XXX_LIBRARY Name of XXX Library. A User may set this and
> XXX_INCLUDE_DIR to ignore to force non-use of XXX.
> XXX_YY_LIBRARY Name of YY library that is part of the XXX
> system. It may
> or may not be required to use XXX.
>
>
> For tidiness's sake, try to keep as many options as possible
> out of the
> cache, leaving at least one option which can be used to
> disable use of the
> module, or locate a not-found library (e.g. XXX_ROOT_DIR).
> For the same
> reason, mark most cache options as advanced.
>
> If you need other commands to do special things then it
> should still begin
> with XXX_. This gives a sort of namespace effect and keeps
> things tidy for
> the user. You should put comments describing all the exported
> settings, plus
> descriptions of any the users can use to control stuff.
>
> You really should also provide backwards compatibility any
> old settings that
> were actually in use. Make sure you comment them as
> deprecated, so that
> no-one starts using them. Also useful would be a deprecation
> mechanism ( eg
> IF(CMAKE_PROVIDE_1.4_VARIABLES) ) to help with the removal of the old
> values - however I haven't done this.
>
> Ian.
>
>
> _______________________________________________
> Cmake mailing list
> Cmake at public.kitware.com
> http://public.kitware.com/mailman/listinfo/cmake
>
More information about the CMake
mailing list