CMake/Modules
Bill Hoffman 4a20d4fe39 ENH: don't need two of these 2006-04-19 11:14:00 -04:00
..
Platform ENH: don't need two of these 2006-04-19 11:14:00 -04:00
AddFileDependencies.cmake BUG: don't include MacroLibrary.cmake, but add a cmake module which implements ADD_FILE_DEPENDENCIES() 2006-03-20 12:29:56 -05:00
CMake.cmake
CMakeAddNewLanguage.txt
CMakeBackwardCompatibilityC.cmake
CMakeBackwardCompatibilityCXX.cmake
CMakeBorlandFindMake.cmake
CMakeBuildSettings.cmake.in
CMakeCCompiler.cmake.in
CMakeCInformation.cmake ENH: Split CMAKE_STANDARD_LIBRARIES into per-language variables CMAKE_<lang>_STANDARD_LIBRARIES. This is needed to get programmable language support working with Visual Studio generators. It makes sense anyway. 2006-04-11 16:55:49 -04:00
CMakeCXXCompiler.cmake.in
CMakeCXXInformation.cmake ENH: Split CMAKE_STANDARD_LIBRARIES into per-language variables CMAKE_<lang>_STANDARD_LIBRARIES. This is needed to get programmable language support working with Visual Studio generators. It makes sense anyway. 2006-04-11 16:55:49 -04:00
CMakeCommonLanguageInclude.cmake
CMakeConfigurableFile.in
CMakeDetermineCCompiler.cmake
CMakeDetermineCXXCompiler.cmake ENH: add mingw test to cxx 2006-04-17 13:57:34 -04:00
CMakeDetermineFortranCompiler.cmake
CMakeDetermineJavaCompiler.cmake
CMakeDetermineRCCompiler.cmake
CMakeDetermineSystem.cmake
CMakeExportBuildSettings.cmake
CMakeFindFrameworks.cmake
CMakeFindWMake.cmake
CMakeFindXCode.cmake
CMakeFortranCompiler.cmake.in
CMakeFortranInformation.cmake ENH: Split CMAKE_STANDARD_LIBRARIES into per-language variables CMAKE_<lang>_STANDARD_LIBRARIES. This is needed to get programmable language support working with Visual Studio generators. It makes sense anyway. 2006-04-11 16:55:49 -04:00
CMakeGenericSystem.cmake
CMakeImportBuildSettings.cmake
CMakeJavaCompiler.cmake.in
CMakeJavaInformation.cmake ENH: fix java and add OBJECT_DIR support 2006-04-17 14:01:22 -04:00
CMakeLists.txt
CMakeMSYSFindMake.cmake
CMakeMinGWFindMake.cmake
CMakeNMakeFindMake.cmake
CMakePrintSystemInformation.cmake
CMakeRCCompiler.cmake.in
CMakeRCInformation.cmake
CMakeSystem.cmake.in
CMakeSystemSpecificInformation.cmake BUG: When copying the module variables from shared library variables use double quotes for the required definitions ...PREFIX and ...SUFFIX to make sure a value is set even if it is empty. 2006-03-16 17:07:36 -05:00
CMakeTestCCompiler.cmake
CMakeTestCXXCompiler.cmake
CMakeTestForFreeVC.cxx
CMakeTestFortranCompiler.cmake
CMakeTestGNU.c
CMakeTestJavaCompiler.cmake
CMakeTestNMakeCLVersion.c
CMakeTestRCCompiler.cmake
CMakeUnixFindMake.cmake
CMakeVS6BackwardCompatibility.cmake
CMakeVS6FindMake.cmake ENH: add correct flags for msvc generators 2006-04-10 13:46:37 -04:00
CMakeVS7BackwardCompatibility.cmake
CMakeVS7FindMake.cmake ENH: add correct flags for msvc generators 2006-04-10 13:46:37 -04:00
CMakeVS8FindMake.cmake ENH: add correct flags for msvc generators 2006-04-10 13:46:37 -04:00
CMakeVS71FindMake.cmake ENH: add correct flags for msvc generators 2006-04-10 13:46:37 -04:00
CPack.Description.plist.in
CPack.Info.plist.in ENH: Add verbose flag to package maker and add CFBundleIdentifier string 2006-03-03 10:52:26 -05:00
CPack.STGZ_Header.sh.in ENH: More cleanups and add stgz header script, so it does not have to be hard-coded. Also, the user can overwrite it 2006-04-18 08:25:24 -04:00
CPack.cmake BUG: Need to ignore source packaging of #*# files created by emacs during editing. 2006-04-18 10:01:37 -04:00
CTest.cmake
CTestTargets.cmake
CheckCSourceCompiles.cmake ENH: Cleanup bootstrap even more 2006-03-22 11:15:35 -05:00
CheckCXXSourceCompiles.cmake ENH: Cleanup bootstrap even more 2006-03-22 11:15:35 -05:00
CheckForPthreads.c
CheckFunctionExists.c
CheckFunctionExists.cmake
CheckIncludeFile.c.in
CheckIncludeFile.cmake
CheckIncludeFile.cxx.in
CheckIncludeFileCXX.cmake
CheckIncludeFiles.cmake
CheckLibraryExists.cmake
CheckLibraryExists.lists.in
CheckSizeOf.cmake
CheckSymbolExists.cmake
CheckTypeSize.c.in
CheckTypeSize.cmake
CheckVariableExists.c
CheckVariableExists.cmake
Dart.cmake
DartConfiguration.tcl.in
Documentation.cmake
DummyCXXFile.cxx
FindAVIFile.cmake
FindCABLE.cmake
FindCurses.cmake
FindCygwin.cmake
FindDCMTK.cmake
FindDart.cmake
FindDoxygen.cmake
FindFLTK.cmake
FindGCCXML.cmake
FindGLU.cmake
FindGLUT.cmake
FindGTK.cmake
FindGnuplot.cmake
FindHTMLHelp.cmake
FindITK.cmake
FindImageMagick.cmake
FindJNI.cmake
FindJPEG.cmake
FindJava.cmake
FindKDE.cmake ENH: add real-world-tested and used KDE3 support, and obsolete FindKDE.cmake, which wasn't used by anybody that I heard of 2006-03-09 14:10:59 -05:00
FindKDE3.cmake BUG: put the path to the kde3 lib dir in KDE3_LIB_DIR, not the complete 2006-03-21 12:56:01 -05:00
FindKDE4.cmake STYLE: better error message when KDE4 hasn't been found 2006-03-28 13:07:09 -05:00
FindLATEX.cmake
FindMFC.cmake
FindMPEG.cmake
FindMPEG2.cmake
FindMPI.cmake
FindMatlab.cmake
FindMotif.cmake
FindOpenAL.cmake
FindOpenGL.cmake ENH: go back to finding the framework opengl on the mac 2006-03-14 16:38:52 -05:00
FindPHP4.cmake
FindPNG.cmake BUG: don't include MacroLibrary.cmake, but add a cmake module which implements ADD_FILE_DEPENDENCIES() 2006-03-20 12:29:56 -05:00
FindPerl.cmake
FindPerlLibs.cmake
FindPhysFS.cmake
FindPike.cmake
FindPythonInterp.cmake
FindPythonLibs.cmake ENH: Updated implementation to use new FIND_* command power. The correct library is now found on MinGW also. 2006-03-24 14:47:25 -05:00
FindQt.cmake
FindQt3.cmake ENH: try to fix non-clean dashboards 2006-03-06 14:08:15 -05:00
FindQt4.cmake
FindRuby.cmake
FindSDL.cmake
FindSDL_image.cmake
FindSDL_mixer.cmake
FindSDL_net.cmake
FindSDL_sound.cmake
FindSDL_ttf.cmake
FindSWIG.cmake
FindSelfPackers.cmake
FindTCL.cmake ENH: fix a bug in the find path stuff so that it can find headers deep in frameworks 2006-03-09 11:35:38 -05:00
FindTIFF.cmake
FindTclsh.cmake
FindThreads.cmake
FindUnixCommands.cmake
FindVTK.cmake
FindWget.cmake
FindWish.cmake
FindX11.cmake ENH: fix find x11 on the mac 2006-04-17 15:55:24 -04:00
FindZLIB.cmake
FindwxWidgets.cmake
FindwxWindows.cmake
InstallRequiredSystemLibraries.cmake ENH: add correct flags for msvc generators 2006-04-10 13:46:37 -04:00
KDE3Macros.cmake BUG: don't include MacroLibrary.cmake, but add a cmake module which implements ADD_FILE_DEPENDENCIES() 2006-03-20 12:29:56 -05:00
MacOSXBundleInfo.plist.in
NSIS.template.in ENH: Several changes to for NSIS 2006-03-01 15:00:07 -05:00
TestBigEndian.c
TestBigEndian.cmake
TestCXXAcceptsFlag.cmake
TestForANSIForScope.cmake
TestForANSIStreamHeaders.cmake
TestForANSIStreamHeaders.cxx
TestForAnsiForScope.cxx
TestForSSTREAM.cmake
TestForSSTREAM.cxx
TestForSTDNamespace.cmake
TestForSTDNamespace.cxx
UsePkgConfig.cmake BUG: change the formatting of the pkgconfig module documentation so that it 2006-03-15 13:20:03 -05:00
UseQt4.cmake
UseSWIG.cmake
UseVTK40.cmake
UseVTKBuildSettings40.cmake
UseVTKConfig40.cmake
Use_wxWindows.cmake
UsewxWidgets.cmake
VTKCompatibility.cmake ENH: add backwards compatibility fix for more aggressive find_path command 2006-03-13 13:11:50 -05:00
kde3init_dummy.cpp.in ENH: add real-world-tested and used KDE3 support, and obsolete FindKDE.cmake, which wasn't used by anybody that I heard of 2006-03-09 14:10:59 -05:00
kde3uic.cmake ENH: add real-world-tested and used KDE3 support, and obsolete FindKDE.cmake, which wasn't used by anybody that I heard of 2006-03-09 14:10:59 -05:00
readme.txt

readme.txt

Note to authors of FindXXX.cmake files

We would like all FindXXX.cmake files to produce consistent variable names.

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 Caches 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.

To correctly document a module, create a comment block at the top with # comments.  There are three types of comments that can be in the block:

1. The brief description of the module, this is done by:
# - a small description

2. A paragraph of text.  This is done with all text that has a single
space between the # and the text.  To create a new paragraph, just
put a # with no text on the line.

3. A verbatim line.  This is done with two spaces between the # and the text.

For example:

# - This is a cool module
# This module does really cool stuff.
# It can do even more than you think.
# 
# It even needs to paragraphs to tell you about it.
# And it defines the following variables:
#  VAR_COOL - this is greate isn't it?
#  VAR_REALLY_COOL - cool right?
#

To have a .cmake file in this directory NOT show up in the
modules documentation, you should start the file with a blank
line.

A FindXXX.cmake module will typically be loaded by the command

  FIND_PACKAGE(XXX [QUIET] [REQUIRED [components...]])

If the QUIET option is given to the command it will set the variable
XXX_FIND_QUIETLY to true before loading the FindXXX.cmake module.  If
this variable is set the module should not complain about not being
able to find the package and should never issue a FATAL_ERROR.  If the
REQUIRED option is given to the command it will set the variable
XXX_FIND_REQUIRED to true before loading the FindXXX.cmake module.  If
this variable is set the module should issue a FATAL_ERROR if the
package cannot be found.  For each package-specific component, say
YYY, listed after the REQUIRED option a variable XXX_FIND_REQUIRED_YYY
to true.  This can be used by the FindXXX.cmake module to determine
which sub-components of the package must be found.  If neither the
QUIET nor REQUIRED options are given then the FindXXX.cmake module
should look for the package and complain without error if the module
is not found.