1cmakemodules(1)             General Commands Manual            cmakemodules(1)
2
3
4

NAME

6       cmakemodules - Reference of available CMake modules.
7
8

DESCRIPTION

10       The  "cmake" executable is the CMake command-line interface.  It may be
11       used to configure projects in scripts.  Project configuration  settings
12       may be specified on the command line with the -D option.  The -i option
13       will cause cmake to interactively prompt for such settings.
14
15
16       CMake is a cross-platform build  system  generator.   Projects  specify
17       their  build process with platform-independent CMake listfiles included
18       in each directory of a source tree with the name CMakeLists.txt.  Users
19       build  a project by using CMake to generate a build system for a native
20       tool on their platform.
21
22

MODULES

24       The following modules are provided with CMake. They can  be  used  with
25       INCLUDE(ModuleName).
26
27
28         CMake Modules - Modules coming with CMake, the Cross-Platform Makefile Generator.
29
30
31       This  is  the  documentation  for  the  modules and scripts coming with
32       CMake. Using these modules  you  can  check  the  computer  system  for
33       installed software packages, features of the compiler and the existence
34       of headers to name just a few.
35
36
37       AddFileDependencies
38              ADD_FILE_DEPENDENCIES(source_file depend_files...)
39
40              Adds the given files as dependencies to source_file
41
42
43
44       BundleUtilities
45              Functions to help assemble a standalone bundle application.
46
47              A collection of CMake utility functions useful for dealing  with
48              .app bundles on the Mac and bundle-like directories on any OS.
49
50
51              The following functions are provided by this module:
52
53
54                 fixup_bundle
55                 copy_and_fixup_bundle
56                 verify_app
57                 get_bundle_main_executable
58                 get_dotapp_dir
59                 get_bundle_and_executable
60                 get_bundle_all_executables
61                 get_item_key
62                 clear_bundle_keys
63                 set_bundle_key_values
64                 get_bundle_keys
65                 copy_resolved_item_into_bundle
66                 copy_resolved_framework_into_bundle
67                 fixup_bundle_item
68                 verify_bundle_prerequisites
69                 verify_bundle_symlinks
70
71              Requires  CMake  2.6  or greater because it uses function, break
72              and PARENT_SCOPE. Also depends on GetPrerequisites.cmake.
73
74
75                FIXUP_BUNDLE(<app> <libs> <dirs>)
76
77              Fix up a bundle in-place and make it standalone,  such  that  it
78              can  be  drag-n-drop  copied  to another machine and run on that
79              machine as long as all of the system libraries are compatible.
80
81
82              If you pass plugins to fixup_bundle as the libs  parameter,  you
83              should  install them or copy them into the bundle before calling
84              fixup_bundle. The "libs" parameter is a list of  libraries  that
85              must  be fixed up, but that cannot be determined by otool output
86              analysis. (i.e., plugins)
87
88
89              Gather all the keys for all the executables and libraries  in  a
90              bundle,  and then, for each key, copy each prerequisite into the
91              bundle. Then fix each one up according to its own list  of  pre‐
92              requisites.
93
94
95              Then  clear all the keys and call verify_app on the final bundle
96              to ensure that it is truly standalone.
97
98
99                COPY_AND_FIXUP_BUNDLE(<src> <dst> <libs> <dirs>)
100
101              Makes a copy of the bundle <src>  at  location  <dst>  and  then
102              fixes up the new copied bundle in-place at <dst>...
103
104
105                VERIFY_APP(<app>)
106
107              Verifies  that  an application <app> appears valid based on run‐
108              ning analysis tools on it. Calls  "message(FATAL_ERROR"  if  the
109              application is not verified.
110
111
112                GET_BUNDLE_MAIN_EXECUTABLE(<bundle> <result_var>)
113
114              The  result will be the full path name of the bundle's main exe‐
115              cutable file or an "error:" prefixed string if it could  not  be
116              determined.
117
118
119                GET_DOTAPP_DIR(<exe> <dotapp_dir_var>)
120
121              Returns the nearest parent dir whose name ends with ".app" given
122              the full path to an executable. If there is no such parent  dir,
123              then simply return the dir containing the executable.
124
125
126              The returned directory may or may not exist.
127
128
129                GET_BUNDLE_AND_EXECUTABLE(<app> <bundle_var> <executable_var> <valid_var>)
130
131              Takes  either  a  ".app"  directory  name or the name of an exe‐
132              cutable nested inside a ".app" directory and returns the path to
133              the  ".app"  directory  in <bundle_var> and the path to its main
134              executable in <executable_var>
135
136
137                GET_BUNDLE_ALL_EXECUTABLES(<bundle> <exes_var>)
138
139              Scans the given bundle recursively for all executable files  and
140              accumulates them into a variable.
141
142
143                GET_ITEM_KEY(<item> <key_var>)
144
145              Given  a  file (item) name, generate a key that should be unique
146              considering the set of libraries that need copying or fixing  up
147              to  make  a bundle standalone. This is essentially the file name
148              including extension with "." replaced by "_"
149
150
151              This key is used as a prefix for CMake variables so that we  can
152              associate a set of variables with a given item based on its key.
153
154
155                CLEAR_BUNDLE_KEYS(<keys_var>)
156
157              Loop  over  the list of keys, clearing all the variables associ‐
158              ated with each key. After the  loop,  clear  the  list  of  keys
159              itself.
160
161
162              Caller  of  get_bundle_keys  should  call clear_bundle_keys when
163              done with list of keys.
164
165
166                SET_BUNDLE_KEY_VALUES(<keys_var> <context> <item> <exepath> <dirs>
167                                      <copyflag>)
168
169              Add a key to the list (if necessary)  for  the  given  item.  If
170              added, also set all the variables associated with that key.
171
172
173                GET_BUNDLE_KEYS(<app> <libs> <dirs> <keys_var>)
174
175              Loop over all the executable and library files within the bundle
176              (and given as extra <libs>) and accumulate a list of keys repre‐
177              senting  them.  Set values associated with each key such that we
178              can loop over all of them and copy prerequisite  libs  into  the
179              bundle and then do appropriate install_name_tool fixups.
180
181
182                COPY_RESOLVED_ITEM_INTO_BUNDLE(<resolved_item> <resolved_embedded_item>)
183
184              Copy  a  resolved item into the bundle if necessary. Copy is not
185              necessary  if  the  resolved_item   is   "the   same   as"   the
186              resolved_embedded_item.
187
188
189                COPY_RESOLVED_FRAMEWORK_INTO_BUNDLE(<resolved_item> <resolved_embedded_item>)
190
191              Copy  a resolved framework into the bundle if necessary. Copy is
192              not  necessary  if  the  resolved_item  is  "the  same  as"  the
193              resolved_embedded_item.
194
195
196              By  default,  BU_COPY_FULL_FRAMEWORK_CONTENTS is not set. If you
197              want   full   frameworks   embedded   in   your   bundles,   set
198              BU_COPY_FULL_FRAMEWORK_CONTENTS  to ON before calling fixup_bun‐
199              dle. By default, COPY_RESOLVED_FRAMEWORK_INTO_BUNDLE copies  the
200              framework dylib itself plus the framework Resources directory.
201
202
203                FIXUP_BUNDLE_ITEM(<resolved_embedded_item> <exepath> <dirs>)
204
205              Get the direct/non-system prerequisites of the resolved embedded
206              item. For each prerequisite, change the way it is referenced  to
207              the  value of the _EMBEDDED_ITEM keyed variable for that prereq‐
208              uisite. (Most likely changing  to  an  "@executable_path"  style
209              reference.)
210
211
212              This   function  requires  that  the  resolved_embedded_item  be
213              "inside" the bundle already. In other words, if you pass plugins
214              to  fixup_bundle  as the libs parameter, you should install them
215              or copy them into the bundle before  calling  fixup_bundle.  The
216              "libs"  parameter  is a list of libraries that must be fixed up,
217              but that cannot be determined by otool output  analysis.  (i.e.,
218              plugins)
219
220
221              Also,  change  the  id  of  the  item  being fixed up to its own
222              _EMBEDDED_ITEM value.
223
224
225              Accumulate changes in a local variable and make  *one*  call  to
226              install_name_tool  at  the  end  of  the  function  with all the
227              changes at once.
228
229
230              If the BU_CHMOD_BUNDLE_ITEMS variable is set then  bundle  items
231              will be marked writable before install_name_tool tries to change
232              them.
233
234
235                VERIFY_BUNDLE_PREREQUISITES(<bundle> <result_var> <info_var>)
236
237              Verifies that the sum of all prerequisites of all  files  inside
238              the  bundle  are  contained  within  the  bundle or are "system"
239              libraries, presumed to exist everywhere.
240
241
242                VERIFY_BUNDLE_SYMLINKS(<bundle> <result_var> <info_var>)
243
244              Verifies that any symlinks found in the bundle  point  to  other
245              files  that  are  already  also  in  the bundle... Anything that
246              points to an external file causes this function to fail the ver‐
247              ification.
248
249
250       CMakeAddFortranSubdirectory
251              Use MinGW gfortran from VS if a fortran compiler is not found.
252
253              The 'add_fortran_subdirectory' function adds a subdirectory to a
254              project that contains a fortran  only  sub-project.  The  module
255              will  check  the current compiler and see if it can support for‐
256              tran. If no fortran compiler is found and the compiler is  MSVC,
257              then this module will find the MinGW gfortran.  It will then use
258              an external project to build with the MinGW tools.  It will also
259              create  imported  targets  for the libraries created.  This will
260              only  work  if  the  fortran  code  is  built  into  a  dll,  so
261              BUILD_SHARED_LIBS  is turned on in the project.  In addition the
262              CMAKE_GNUtoMS option is set to on, so that the MS .lib files are
263              created. Usage is as follows:
264
265
266                cmake_add_fortran_subdirectory(
267                 <subdir>                # name of subdirectory
268                 PROJECT <project_name>  # project name in subdir top CMakeLists.txt
269                 ARCHIVE_DIR <dir>       # dir where project places .lib files
270                 RUNTIME_DIR <dir>       # dir where project places .dll files
271                 LIBRARIES <lib>...      # names of library targets to import
272                 LINK_LIBRARIES          # link interface libraries for LIBRARIES
273                  [LINK_LIBS <lib> <dep>...]...
274                 CMAKE_COMMAND_LINE ...  # extra command line flags to pass to cmake
275                 NO_EXTERNAL_INSTALL     # skip installation of external project
276                 )
277
278              Relative  paths  in  ARCHIVE_DIR and RUNTIME_DIR are interpreted
279              with respect to the build directory corresponding to the  source
280              directory in which the function is invoked.
281
282
283              Limitations:
284
285
286              NO_EXTERNAL_INSTALL is required for forward compatibility with a
287              future  version  that  supports  installation  of  the  external
288              project binaries during "make install".
289
290
291       CMakeBackwardCompatibilityCXX
292              define a bunch of backwards compatibility variables
293
294                CMAKE_ANSI_CXXFLAGS - flag for ansi c++
295                CMAKE_HAS_ANSI_STRING_STREAM - has <strstream>
296                include(TestForANSIStreamHeaders)
297                include(CheckIncludeFileCXX)
298                include(TestForSTDNamespace)
299                include(TestForANSIForScope)
300
301
302       CMakeDependentOption
303              Macro to provide an option dependent on other options.
304
305              This macro presents an option to the user only if a set of other
306              conditions are true.  When the option is not presented a default
307              value  is  used,  but any value set by the user is preserved for
308              when the option is presented again. Example invocation:
309
310
311                CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON
312                                       "USE_BAR;NOT USE_ZOT" OFF)
313
314              If USE_BAR is true and USE_ZOT is false, this provides an option
315              called  USE_FOO that defaults to ON.  Otherwise, it sets USE_FOO
316              to OFF.  If the status of USE_BAR or USE_ZOT ever  changes,  any
317              value for the USE_FOO option is saved so that when the option is
318              re-enabled it retains its old value.
319
320
321       CMakeDetermineVSServicePack
322              Determine the Visual Studio service pack of the 'cl' in use.
323
324              The functionality of this module  has  been  superseded  by  the
325              platform  variable  CMAKE_<LANG>_COMPILER_VERSION  that contains
326              the compiler version number.
327
328
329              Usage:
330
331
332                if(MSVC)
333                  include(CMakeDetermineVSServicePack)
334                  DetermineVSServicePack( my_service_pack )
335                  if( my_service_pack )
336                    message(STATUS "Detected: ${my_service_pack}")
337                  endif()
338                endif()
339
340              Function DetermineVSServicePack sets the given variable  to  one
341              of the following values or an empty string if unknown:
342
343
344                vc80, vc80sp1
345                vc90, vc90sp1
346                vc100, vc100sp1
347                vc110, vc110sp1, vc110sp2
348
349
350       CMakeExpandImportedTargets
351
352
353              CMAKE_EXPAND_IMPORTED_TARGETS(<var> LIBRARIES lib1 lib2...libN
354
355
356                                                   [CONFIGURATION <config>] )
357
358
359
360
361              CMAKE_EXPAND_IMPORTED_TARGETS()  takes  a  list of libraries and
362              replaces all imported targets contained in this list with  their
363              actual file paths of the referenced libraries on disk, including
364              the libraries from their link interfaces. If a CONFIGURATION  is
365              given, it uses the respective configuration of the imported tar‐
366              gets if it exists. If no CONFIGURATION is  given,  it  uses  the
367              first  configuration  from  ${CMAKE_CONFIGURATION_TYPES} if set,
368              otherwise  ${CMAKE_BUILD_TYPE}.  This  macro  is  used  by   all
369              Check*.cmake files which use try_compile() or try_run() and sup‐
370              port CMAKE_REQUIRED_LIBRARIES , so  that  these  checks  support
371              imported targets in CMAKE_REQUIRED_LIBRARIES:
372
373
374                  cmake_expand_imported_targets(expandedLibs LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
375                                                             CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}" )
376
377
378       CMakeFindFrameworks
379              helper module to find OSX frameworks
380
381
382       CMakeFindPackageMode
383
384
385              This file is executed by cmake when invoked with --find-package.
386              It expects that the following variables are set using -D:
387
388
389                 NAME = name of the package
390                 COMPILER_ID = the CMake compiler ID for which the result is, i.e. GNU/Intel/Clang/MSVC, etc.
391                 LANGUAGE = language for which the result will be used, i.e. C/CXX/Fortan/ASM
392                 MODE = EXIST : only check for existence of the given package
393                        COMPILE : print the flags needed for compiling an object file which uses the given package
394                        LINK : print the flags needed for linking when using the given package
395                 QUIET = if TRUE, don't print anything
396
397
398       CMakeForceCompiler
399
400
401              This module defines macros intended for use  by  cross-compiling
402              toolchain  files  when CMake is not able to automatically detect
403              the compiler identification.
404
405
406              Macro CMAKE_FORCE_C_COMPILER has the following signature:
407
408
409                 CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>)
410
411              It sets CMAKE_C_COMPILER to the given  compiler  and  the  cmake
412              internal  variable CMAKE_C_COMPILER_ID to the given compiler-id.
413              It also bypasses the check for working compiler and  basic  com‐
414              piler information tests.
415
416
417              Macro CMAKE_FORCE_CXX_COMPILER has the following signature:
418
419
420                 CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>)
421
422              It  sets  CMAKE_CXX_COMPILER to the given compiler and the cmake
423              internal  variable  CMAKE_CXX_COMPILER_ID  to  the  given   com‐
424              piler-id.  It  also  bypasses the check for working compiler and
425              basic compiler information tests.
426
427
428              Macro CMAKE_FORCE_Fortran_COMPILER has the following signature:
429
430
431                 CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>)
432
433              It sets CMAKE_Fortran_COMPILER to the  given  compiler  and  the
434              cmake  internal  variable CMAKE_Fortran_COMPILER_ID to the given
435              compiler-id. It also bypasses the check for working compiler and
436              basic compiler information tests.
437
438
439              So a simple toolchain file could look like this:
440
441
442                 include (CMakeForceCompiler)
443                 set(CMAKE_SYSTEM_NAME Generic)
444                 CMAKE_FORCE_C_COMPILER   (chc12 MetrowerksHicross)
445                 CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross)
446
447
448       CMakeGraphVizOptions
449              The builtin graphviz support of CMake.
450
451              CMake  can  generate  graphviz  files,  showing the dependencies
452              between the targets in a project  and  also  external  libraries
453              which  are  linked  against.  When  CMake is run with the --gra‐
454              phiz=foo option, it will produce
455
456
457                  * a foo.dot file showing all dependencies in the project
458                  * a foo.dot.<target> file for each target, file showing on which other targets the respective target depends
459                  * a foo.dot.<target>.dependers file, showing which other targets depend on the respective target
460
461
462
463
464              This can result in huge graphs. Using the file  CMakeGraphVizOp‐
465              tions.cmake  the look and content of the generated graphs can be
466              influenced. This file is searched first  in  ${CMAKE_BINARY_DIR}
467              and  then  in  ${CMAKE_SOURCE_DIR}. If found, it is read and the
468              variables set in it are used to adjust options for the generated
469              graphviz files.
470
471
472                GRAPHVIZ_GRAPH_TYPE - The graph type
473                   Mandatory : NO
474                   Default   : "digraph"
475                GRAPHVIZ_GRAPH_NAME - The graph name.
476                   Mandatory : NO
477                   Default   : "GG"
478                GRAPHVIZ_GRAPH_HEADER - The header written at the top of the graphviz file.
479                   Mandatory : NO
480                   Default   : "node [n  fontsize = "12"];"
481                GRAPHVIZ_NODE_PREFIX - The prefix for each node in the graphviz file.
482                   Mandatory : NO
483                   Default   : "node"
484                GRAPHVIZ_EXECUTABLES - Set this to FALSE to exclude executables from the generated graphs.
485                   Mandatory : NO
486                   Default   : TRUE
487                GRAPHVIZ_STATIC_LIBS - Set this to FALSE to exclude static libraries from the generated graphs.
488                   Mandatory : NO
489                   Default   : TRUE
490                GRAPHVIZ_SHARED_LIBS - Set this to FALSE to exclude shared libraries from the generated graphs.
491                   Mandatory : NO
492                   Default   : TRUE
493                GRAPHVIZ_MODULE_LIBS - Set this to FALSE to exclude static libraries from the generated graphs.
494                   Mandatory : NO
495                   Default   : TRUE
496                GRAPHVIZ_EXTERNAL_LIBS - Set this to FALSE to exclude external libraries from the generated graphs.
497                   Mandatory : NO
498                   Default   : TRUE
499                GRAPHVIZ_IGNORE_TARGETS - A list of regular expressions for ignoring targets.
500                   Mandatory : NO
501                   Default   : empty
502
503
504       CMakePackageConfigHelpers
505              CONFIGURE_PACKAGE_CONFIG_FILE(),        WRITE_BASIC_PACKAGE_VER‐
506              SION_FILE()
507
508
509
510
511                  CONFIGURE_PACKAGE_CONFIG_FILE(<input> <output> INSTALL_DESTINATION <path>
512                                                                 [PATH_VARS <var1> <var2> ... <varN>]
513                                                                 [NO_SET_AND_CHECK_MACRO]
514                                                                 [NO_CHECK_REQUIRED_COMPONENTS_MACRO])
515
516
517
518
519              CONFIGURE_PACKAGE_CONFIG_FILE() should be used  instead  of  the
520              plain  configure_file()  command  when  creating  the <Name>Con‐
521              fig.cmake or <Name>-config.cmake file for installing  a  project
522              or library. It helps making the resulting package relocatable by
523              avoiding hardcoded paths in the installed Config.cmake file.
524
525
526              In a FooConfig.cmake file there may be code like  this  to  make
527              the install destinations know to the using project:
528
529
530                 set(FOO_INCLUDE_DIR   "@CMAKE_INSTALL_FULL_INCLUDEDIR@" )
531                 set(FOO_DATA_DIR   "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" )
532                 set(FOO_ICONS_DIR   "@CMAKE_INSTALL_PREFIX@/share/icons" )
533                 ...logic to determine installedPrefix from the own location...
534                 set(FOO_CONFIG_DIR  "${installedPrefix}/@CONFIG_INSTALL_DIR@" )
535
536              All  4 options shown above are not sufficient, since the first 3
537              hardcode the absolute directory  locations,  and  the  4th  case
538              works only if the logic to determine the installedPrefix is cor‐
539              rect, and if CONFIG_INSTALL_DIR contains a relative path,  which
540              in  general  cannot  be guaranteed. This has the effect that the
541              resulting FooConfig.cmake file would work poorly  under  Windows
542              and  OSX, where users are used to choose the install location of
543              a  binary  package  at  install  time,  independent   from   how
544              CMAKE_INSTALL_PREFIX was set at build/cmake time.
545
546
547              Using  CONFIGURE_PACKAGE_CONFIG_FILE() helps. If used correctly,
548              it makes the resulting FooConfig.cmake file relocatable. Usage:
549
550
551                 1. write a FooConfig.cmake.in file as you are used to
552                 2. insert a line containing only the string "@PACKAGE_INIT@"
553                 3. instead of set(FOO_DIR "@SOME_INSTALL_DIR@"), use set(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")
554                    (this must be after the @PACKAGE_INIT@ line)
555                 4. instead of using the normal configure_file(), use CONFIGURE_PACKAGE_CONFIG_FILE()
556
557
558
559
560              The <input> and <output> arguments  are  the  input  and  output
561              file, the same way as in configure_file().
562
563
564              The  <path> given to INSTALL_DESTINATION must be the destination
565              where the FooConfig.cmake file will be installed  to.  This  can
566              either be a relative or absolute path, both work.
567
568
569              The  variables <var1> to <varN> given as PATH_VARS are the vari‐
570              ables which contain install destinations. For each of  them  the
571              macro  will  create  a  helper  variable PACKAGE_<var...>. These
572              helper variables must be used in the FooConfig.cmake.in file for
573              setting  the  installed location. They are calculated by CONFIG‐
574              URE_PACKAGE_CONFIG_FILE() so that they are  always  relative  to
575              the installed location of the package. This works both for rela‐
576              tive and also for absolute locations. For absolute locations  it
577              works  only  if  the  absolute  location  is  a  subdirectory of
578              CMAKE_INSTALL_PREFIX.
579
580
581              By default configure_package_config_file()  also  generates  two
582              helper  macros,  set_and_check() and check_required_components()
583              into the FooConfig.cmake file.
584
585
586              set_and_check() should be used instead of the normal set()  com‐
587              mand for setting directories and file locations. Additionally to
588              setting the variable it also checks that the referenced file  or
589              directory  actually  exists  and fails with a FATAL_ERROR other‐
590              wise. This makes sure that the created FooConfig.cmake file does
591              not     contain     wrong    references.    When    using    the
592              NO_SET_AND_CHECK_MACRO, this macro is  not  generated  into  the
593              FooConfig.cmake file.
594
595
596              check_required_components(<package_name>)  should  be  called at
597              the end of the FooConfig.cmake file if the package supports com‐
598              ponents.  This  macro checks whether all requested, non-optional
599              components have been found, and if this is not  the  case,  sets
600              the  Foo_FOUND variable to FALSE, so that the package is consid‐
601              ered to be not found. It does that by  testing  the  Foo_<Compo‐
602              nent>_FOUND  variables  for  all  requested required components.
603              When using the NO_CHECK_REQUIRED_COMPONENTS option,  this  macro
604              is not generated into the FooConfig.cmake file.
605
606
607              For an example see below the documentation for WRITE_BASIC_PACK‐
608              AGE_VERSION_FILE().
609
610
611
612
613
614                WRITE_BASIC_PACKAGE_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion|ExactVersion) )
615
616
617
618
619              Writes a file for use as  <package>ConfigVersion.cmake  file  to
620              <filename>.  See the documentation of find_package() for details
621              on this.
622
623
624                  filename is the output filename, it should be in the build tree.
625                  major.minor.patch is the version number of the project to be installed
626
627              The COMPATIBILITY mode AnyNewerVersion means that the  installed
628              package  version will be considered compatible if it is newer or
629              exactly the same as the requested version. This mode  should  be
630              used  for  packages  which  are  fully backward compatible, also
631              across major versions. If SameMajorVersion is used instead, then
632              the  behaviour  differs  from  AnyNewerVersion in that the major
633              version number must be the same as requested, e.g.  version  2.0
634              will not be considered compatible if 1.0 is requested. This mode
635              should be used for packages which guarantee backward compatibil‐
636              ity within the same major version. If ExactVersion is used, then
637              the package is only considered compatible if the requested  ver‐
638              sion matches exactly its own version number (not considering the
639              tweak version). For example, version 1.2.3 of a package is  only
640              considered  compatible  to requested version 1.2.3. This mode is
641              for packages without compatibility guarantees. If  your  project
642              has  more  elaborated  version  matching rules, you will need to
643              write your own custom ConfigVersion.cmake file instead of  using
644              this macro.
645
646
647              Internally,  this  macro executes configure_file() to create the
648              resulting version file. Depending on  the  COMPATIBLITY,  either
649              the  file BasicConfigVersion-SameMajorVersion.cmake.in or Basic‐
650              ConfigVersion-AnyNewerVersion.cmake.in is used. Please note that
651              these  two  files  are internal to CMake and you should not call
652              configure_file() on them yourself,  but  they  can  be  used  as
653              starting  point  to  create  more sophisticted custom ConfigVer‐
654              sion.cmake files.
655
656
657
658
659
660              Example   using   both    configure_package_config_file()    and
661              write_basic_package_version_file(): CMakeLists.txt:
662
663
664                 set(INCLUDE_INSTALL_DIR include/ ... CACHE )
665                 set(LIB_INSTALL_DIR lib/ ... CACHE )
666                 set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE )
667                 ...
668                 include(CMakePackageConfigHelpers)
669                 configure_package_config_file(FooConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
670                                               INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake
671                                               PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
672                 write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
673                                                  VERSION 1.2.3
674                                                  COMPATIBILITY SameMajorVersion )
675                 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
676                         DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake )
677
678
679
680
681              With a FooConfig.cmake.in:
682
683
684                 set(FOO_VERSION x.y.z)
685                 ...
686                 @PACKAGE_INIT@
687                 ...
688                 set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
689                 set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@")
690
691
692
693
694                 check_required_components(Foo)
695
696
697       CMakeParseArguments
698
699
700              CMAKE_PARSE_ARGUMENTS(<prefix>   <options>  <one_value_keywords>
701              <multi_value_keywords> args...)
702
703
704              CMAKE_PARSE_ARGUMENTS() is intended to  be  used  in  macros  or
705              functions for parsing the arguments given to that macro or func‐
706              tion. It processes the arguments and defines a set of  variables
707              which hold the values of the respective options.
708
709
710              The  <options>  argument contains all options for the respective
711              macro, i.e. keywords which can be used when  calling  the  macro
712              without  any  value following, like e.g. the OPTIONAL keyword of
713              the install() command.
714
715
716              The <one_value_keywords> argument contains all keywords for this
717              macro  which  are  followed  by one value, like e.g. DESTINATION
718              keyword of the install() command.
719
720
721              The <multi_value_keywords> argument contains  all  keywords  for
722              this  macro  which  can be followed by more than one value, like
723              e.g. the TARGETS or FILES keywords of the install() command.
724
725
726              When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of
727              the  keywords  listed  in  <options>,  <one_value_keywords>  and
728              <multi_value_keywords> a variable composed of the given <prefix>
729              followed  by  "_"  and the name of the respective keyword. These
730              variables will then hold the respective value from the  argument
731              list. For the <options> keywords this will be TRUE or FALSE.
732
733
734              All  remaining  arguments  are  collected  in  a  variable <pre‐
735              fix>_UNPARSED_ARGUMENTS, this can be checked afterwards  to  see
736              whether your macro was called with unrecognized parameters.
737
738
739              As  an  example  here  a my_install() macro, which takes similar
740              arguments as the real install() command:
741
742
743                 function(MY_INSTALL)
744                   set(options OPTIONAL FAST)
745                   set(oneValueArgs DESTINATION RENAME)
746                   set(multiValueArgs TARGETS CONFIGURATIONS)
747                   cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
748                   ...
749
750
751
752
753              Assume my_install() has been called like this:
754
755
756                 my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
757
758
759
760
761              After the cmake_parse_arguments() call the macro will  have  set
762              the following variables:
763
764
765                 MY_INSTALL_OPTIONAL = TRUE
766                 MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
767                 MY_INSTALL_DESTINATION = "bin"
768                 MY_INSTALL_RENAME = "" (was not used)
769                 MY_INSTALL_TARGETS = "foo;bar"
770                 MY_INSTALL_CONFIGURATIONS = "" (was not used)
771                 MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL"
772
773
774
775
776              You can then continue and process these variables.
777
778
779              Keywords  terminate  lists  of  values, e.g. if directly after a
780              one_value_keyword another recognized keyword  follows,  this  is
781              interpreted   as   the   beginning   of  the  new  option.  E.g.
782              my_install(TARGETS foo DESTINATION  OPTIONAL)  would  result  in
783              MY_INSTALL_DESTINATION  set to "OPTIONAL", but MY_INSTALL_DESTI‐
784              NATION would be empty and MY_INSTALL_OPTIONAL would  be  set  to
785              TRUE therefor.
786
787
788       CMakePrintHelpers
789              Convenience macros for printing properties and variables, useful
790              e.g. for debugging.
791
792
793
794
795
796
797
798              CMAKE_PRINT_PROPERTIES([TARGETS target1 .. targetN]
799
800
801                                      [SOURCES source1 .. sourceN]
802                                      [DIRECTORIES dir1 .. dirN]
803                                      [TESTS test1 .. testN]
804                                      [CACHE_ENTRIES entry1 .. entryN]
805                                      PROPERTIES prop1 .. propN )
806
807
808
809
810              This macro prints the values of the properties of the given tar‐
811              gets, source files, directories, tests or cache entries. Exactly
812              one of the scope keywords must be used. Example:
813
814
815                 cmake_print_properties(TARGETS foo bar PROPERTIES LOCATION INTERFACE_INCLUDE_DIRS)
816
817              This will print the LOCATION and INTERFACE_INCLUDE_DIRS  proper‐
818              ties for both targets foo and bar.
819
820
821
822
823
824              CMAKE_PRINT_VARIABLES(var1 var2 .. varN)
825
826
827              This  macro will print the name of each variable followed by its
828              value. Example:
829
830
831                 cmake_print_variables(CMAKE_C_COMPILER CMAKE_MAJOR_VERSION THIS_ONE_DOES_NOT_EXIST)
832
833              Gives:
834
835
836                 -- CMAKE_C_COMPILER="/usr/bin/gcc" ; CMAKE_MAJOR_VERSION="2" ; THIS_ONE_DOES_NOT_EXIST=""
837
838
839       CMakePrintSystemInformation
840              print system information
841
842              This file can be used for diagnostic purposes just include it in
843              a project to see various internal CMake variables.
844
845
846       CMakePushCheckState
847
848
849              This   module  defines  three  macros:  CMAKE_PUSH_CHECK_STATE()
850              CMAKE_POP_CHECK_STATE()  and   CMAKE_RESET_CHECK_STATE()   These
851              macros  can be used to save, restore and reset (i.e., clear con‐
852              tents)  the  state  of   the   variables   CMAKE_REQUIRED_FLAGS,
853              CMAKE_REQUIRED_DEFINITIONS,     CMAKE_REQUIRED_LIBRARIES     and
854              CMAKE_REQUIRED_INCLUDES used by the various  Check-files  coming
855              with  CMake, like e.g. check_function_exists() etc. The variable
856              contents are pushed on a stack, pushing multiple times  is  sup‐
857              ported.  This  is  useful  e.g.  when  executing such tests in a
858              Find-module, where they have to be set, but after the  Find-mod‐
859              ule  has  been  executed they should have the same value as they
860              had before.
861
862
863              CMAKE_PUSH_CHECK_STATE() macro receives optional argument RESET.
864              Whether  it's  specified,  CMAKE_PUSH_CHECK_STATE() will set all
865              CMAKE_REQUIRED_*   variables   to   empty   values,   same    as
866              CMAKE_RESET_CHECK_STATE() call will do.
867
868
869              Usage:
870
871
872                 cmake_push_check_state(RESET)
873                 set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF)
874                 check_function_exists(...)
875                 cmake_reset_check_state()
876                 set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF)
877                 check_function_exists(...)
878                 cmake_pop_check_state()
879
880
881       CMakeVerifyManifest
882
883
884              CMakeVerifyManifest.cmake
885
886
887              This script is used to verify that embeded manifests and side by
888              side manifests for a project match.  To run this script, cd to a
889              directory  and run the script with cmake -P. On the command line
890              you can pass in versions that are OK even if not  found  in  the
891              .manifest files. For example, cmake -Dallow_versions=8.0.50608.0
892              -PCmakeVerifyManifest.cmake could be used to  allow  an  embeded
893              manifest  of  8.0.50608.0  to  be used in a project even if that
894              version was not found in the .manifest file.
895
896
897       CPack  Build binary and source package installers.
898
899              The CPack module generates binary and  source  installers  in  a
900              variety  of  formats  using  the cpack program. Inclusion of the
901              CPack module adds two new targets to  the  resulting  makefiles,
902              package  and  package_source,  which build the binary and source
903              installers, respectively. The generated binary  installers  con‐
904              tain  everything  installed via CMake's INSTALL command (and the
905              deprecated INSTALL_FILES, INSTALL_PROGRAMS, and  INSTALL_TARGETS
906              commands).
907
908
909              For  certain kinds of binary installers (including the graphical
910              installers on Mac OS X and Windows), CPack generates  installers
911              that  allow users to select individual application components to
912              install. See CPackComponent module for that.
913
914
915              The CPACK_GENERATOR variable has different meanings in different
916              contexts.  In  your  CMakeLists.txt  file,  CPACK_GENERATOR is a
917              *list of generators*: when run with no  other  arguments,  CPack
918              will  iterate  over  that  list and produce one package for each
919              generator. In a CPACK_PROJECT_CONFIG_FILE, though, CPACK_GENERA‐
920              TOR  is  a  *string  naming  a  single  generator*.  If you need
921              per-cpack- generator logic to control  *other*  cpack  settings,
922              then you need a CPACK_PROJECT_CONFIG_FILE.
923
924
925              The  CMake  source  tree  itself  contains  a CPACK_PROJECT_CON‐
926              FIG_FILE. See the top level file CMakeCPackOptions.cmake.in  for
927              an example.
928
929
930              If  set, the CPACK_PROJECT_CONFIG_FILE is included automatically
931              on a per-generator basis. It only need contain overrides.
932
933
934              Here's how it works:
935
936
937                - cpack runs
938                - it includes CPackConfig.cmake
939                - it iterates over the generators listed in that file's
940                  CPACK_GENERATOR list variable (unless told to use just a
941                  specific one via -G on the command line...)
942
943
944
945
946                - foreach generator, it then
947                  - sets CPACK_GENERATOR to the one currently being iterated
948                  - includes the CPACK_PROJECT_CONFIG_FILE
949                  - produces the package for that generator
950
951
952
953
954              This is the key: For each generator listed in CPACK_GENERATOR in
955              CPackConfig.cmake, cpack will *reset* CPACK_GENERATOR internally
956              to  *the  one  currently  being  used*  and  then  include   the
957              CPACK_PROJECT_CONFIG_FILE.
958
959
960              Before  including this CPack module in your CMakeLists.txt file,
961              there are a variety of variables that can be  set  to  customize
962              the resulting installers. The most commonly-used variables are:
963
964
965                CPACK_PACKAGE_NAME - The name of the package (or application). If
966                not specified, defaults to the project name.
967
968
969
970
971                CPACK_PACKAGE_VENDOR - The name of the package vendor. (e.g.,
972                "Kitware").
973
974
975
976
977                CPACK_PACKAGE_DIRECTORY - The directory in which CPack is doing its
978                packaging. If it is not set then this will default (internally) to the
979                build dir. This variable may be defined in CPack config file or from
980                the cpack command line option "-B". If set the command line option
981                override the value found in the config file.
982
983
984
985
986                CPACK_PACKAGE_VERSION_MAJOR - Package major Version
987
988
989
990
991                CPACK_PACKAGE_VERSION_MINOR - Package minor Version
992
993
994
995
996                CPACK_PACKAGE_VERSION_PATCH - Package patch Version
997
998
999
1000
1001                CPACK_PACKAGE_DESCRIPTION_FILE - A text file used to describe the
1002                project. Used, for example, the introduction screen of a
1003                CPack-generated Windows installer to describe the project.
1004
1005
1006
1007
1008                CPACK_PACKAGE_DESCRIPTION_SUMMARY - Short description of the
1009                project (only a few words).
1010
1011
1012
1013
1014                CPACK_PACKAGE_FILE_NAME - The name of the package file to generate,
1015                not including the extension. For example, cmake-2.6.1-Linux-i686.
1016                The default value is
1017
1018
1019
1020
1021                ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}.
1022
1023
1024
1025
1026                CPACK_PACKAGE_INSTALL_DIRECTORY - Installation directory on the
1027                target system. This may be used by some CPack generators
1028                like NSIS to create an installation directory e.g., "CMake 2.5"
1029                below the installation prefix. All installed element will be
1030                put inside this directory.
1031
1032
1033
1034
1035                 CPACK_PACKAGE_ICON - A branding image that will be displayed inside
1036                 the installer (used by GUI installers).
1037
1038
1039
1040
1041                CPACK_PROJECT_CONFIG_FILE - CPack-time project CPack configuration
1042                file. This file included at cpack time, once per
1043                generator after CPack has set CPACK_GENERATOR to the actual generator
1044                being used. It allows per-generator setting of CPACK_* variables at
1045                cpack time.
1046
1047
1048
1049
1050                CPACK_RESOURCE_FILE_LICENSE - License to be embedded in the installer. It
1051                will typically be displayed to the user by the produced installer
1052                (often with an explicit "Accept" button, for graphical installers)
1053                prior to installation. This license file is NOT added to installed
1054                file but is used by some CPack generators like NSIS. If you want
1055                to install a license file (may be the same as this one)
1056                along with your project you must add an appropriate CMake INSTALL
1057                command in your CMakeLists.txt.
1058
1059
1060
1061
1062                CPACK_RESOURCE_FILE_README - ReadMe file to be embedded in the installer. It
1063                typically describes in some detail the purpose of the project
1064                during the installation. Not all CPack generators uses
1065                this file.
1066
1067
1068
1069
1070                CPACK_RESOURCE_FILE_WELCOME - Welcome file to be embedded in the
1071                installer. It welcomes users to this installer.
1072                Typically used in the graphical installers on Windows and Mac OS X.
1073
1074
1075
1076
1077                CPACK_MONOLITHIC_INSTALL - Disables the component-based
1078                installation mechanism. When set the component specification is ignored
1079                and all installed items are put in a single "MONOLITHIC" package.
1080                Some CPack generators do monolithic packaging by default and
1081                may be asked to do component packaging by setting
1082                CPACK_<GENNAME>_COMPONENT_INSTALL to 1/TRUE.
1083
1084
1085
1086
1087                CPACK_GENERATOR - List of CPack generators to use. If not
1088                specified, CPack will create a set of options CPACK_BINARY_<GENNAME> (e.g.,
1089                CPACK_BINARY_NSIS) allowing the user to enable/disable individual
1090                generators. This variable may be used on the command line
1091                as well as in:
1092
1093
1094
1095
1096                  cpack -D CPACK_GENERATOR="ZIP;TGZ" /path/to/build/tree
1097
1098
1099
1100
1101                CPACK_OUTPUT_CONFIG_FILE - The name of the CPack binary configuration
1102                file. This file is the CPack configuration generated by the CPack module
1103                for binary installers. Defaults to CPackConfig.cmake.
1104
1105
1106
1107
1108                CPACK_PACKAGE_EXECUTABLES - Lists each of the executables and associated
1109                text label to be used to create Start Menu shortcuts. For example,
1110                setting this to the list ccmake;CMake will
1111                create a shortcut named "CMake" that will execute the installed
1112                executable ccmake. Not all CPack generators use it (at least NSIS and
1113                OSXX11 do).
1114
1115
1116
1117
1118                CPACK_STRIP_FILES - List of files to be stripped. Starting with
1119                CMake 2.6.0 CPACK_STRIP_FILES will be a boolean variable which
1120                enables stripping of all files (a list of files evaluates to TRUE
1121                in CMake, so this change is compatible).
1122
1123
1124
1125
1126              The  following  CPack variables are specific to source packages,
1127              and will not affect binary packages:
1128
1129
1130                CPACK_SOURCE_PACKAGE_FILE_NAME - The name of the source package. For
1131                example cmake-2.6.1.
1132
1133
1134
1135
1136                CPACK_SOURCE_STRIP_FILES - List of files in the source tree that
1137                will be stripped. Starting with CMake 2.6.0
1138                CPACK_SOURCE_STRIP_FILES will be a boolean variable which enables
1139                stripping of all files (a list of files evaluates to TRUE in CMake,
1140                so this change is compatible).
1141
1142
1143
1144
1145                CPACK_SOURCE_GENERATOR - List of generators used for the source
1146                packages. As with CPACK_GENERATOR, if this is not specified then
1147                CPack will create a set of options (e.g., CPACK_SOURCE_ZIP)
1148                allowing users to select which packages will be generated.
1149
1150
1151
1152
1153                CPACK_SOURCE_OUTPUT_CONFIG_FILE - The name of the CPack source
1154                configuration file. This file is the CPack configuration generated by the
1155                CPack module for source installers. Defaults to CPackSourceConfig.cmake.
1156
1157
1158
1159
1160                CPACK_SOURCE_IGNORE_FILES - Pattern of files in the source tree
1161                that won't be packaged when building a source package. This is a
1162                list of regular expression patterns (that must be properly escaped),
1163                e.g., /CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*
1164
1165
1166
1167
1168              The following variables are for advanced uses of CPack:
1169
1170
1171                CPACK_CMAKE_GENERATOR - What CMake generator should be used if the
1172                project is CMake project. Defaults to the value of CMAKE_GENERATOR
1173                few users will want to change this setting.
1174
1175
1176
1177
1178                CPACK_INSTALL_CMAKE_PROJECTS - List of four values that specify
1179                what project to install. The four values are: Build directory,
1180                Project Name, Project Component, Directory. If omitted, CPack will
1181                build an installer that installers everything.
1182
1183
1184
1185
1186                CPACK_SYSTEM_NAME - System name, defaults to the value of
1187                ${CMAKE_SYSTEM_NAME}.
1188
1189
1190
1191
1192                CPACK_PACKAGE_VERSION - Package full version, used internally. By
1193                default, this is built from CPACK_PACKAGE_VERSION_MAJOR,
1194                CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH.
1195
1196
1197
1198
1199                CPACK_TOPLEVEL_TAG - Directory for the installed files.
1200
1201
1202
1203
1204                CPACK_INSTALL_COMMANDS - Extra commands to install components.
1205
1206
1207
1208
1209                CPACK_INSTALLED_DIRECTORIES - Extra directories to install.
1210
1211
1212
1213
1214                 CPACK_PACKAGE_INSTALL_REGISTRY_KEY - Registry key used when
1215                 installing this project. This is only used by installer for Windows.
1216                 The default value is based on the installation directory.
1217                 CPACK_CREATE_DESKTOP_LINKS - List of desktop links to create.
1218
1219
1220
1221
1222
1223       CPackBundle
1224              CPack Bundle generator (Mac OS X) specific options
1225
1226
1227
1228
1229              Installers built on Mac OS X using the Bundle generator use  the
1230              aforementioned  DragNDrop  (CPACK_DMG_xxx)  variables,  plus the
1231              following Bundle-specific parameters (CPACK_BUNDLE_xxx).
1232
1233
1234                CPACK_BUNDLE_NAME - The name of the generated bundle. This
1235                appears in the OSX finder as the bundle name. Required.
1236
1237
1238
1239
1240                CPACK_BUNDLE_PLIST - Path to an OSX plist file that will be used
1241                for the generated bundle. This assumes that the caller has generated
1242                or specified their own Info.plist file. Required.
1243
1244
1245
1246
1247                CPACK_BUNDLE_ICON - Path to an OSX icon file that will be used as
1248                the icon for the generated bundle. This is the icon that appears in the
1249                OSX finder for the bundle, and in the OSX dock when the bundle is opened.
1250                Required.
1251
1252
1253
1254
1255                CPACK_BUNDLE_STARTUP_COMMAND - Path to a startup script. This is a path to
1256                an executable or script that will be run whenever an end-user double-clicks
1257                the generated bundle in the OSX Finder. Optional.
1258
1259
1260       CPackComponent
1261              Build binary and source package installers
1262
1263
1264
1265
1266              The CPackComponent module is the module which handles the compo‐
1267              nent  part  of  CPack.  See CPack module for general information
1268              about CPack.
1269
1270
1271              For certain kinds of binary installers (including the  graphical
1272              installers  on Mac OS X and Windows), CPack generates installers
1273              that allow users to select individual application components  to
1274              install.  The  contents of each of the components are identified
1275              by the COMPONENT argument of CMake's INSTALL command. These com‐
1276              ponents  can  be annotated with user-friendly names and descrip‐
1277              tions, inter-component dependencies, etc., and grouped in  vari‐
1278              ous   ways   to  customize  the  resulting  installer.  See  the
1279              cpack_add_* commands,  described  below,  for  more  information
1280              about component-specific installations.
1281
1282
1283              Component-specific  installation allows users to select specific
1284              sets of  components  to  install  during  the  install  process.
1285              Installation components are identified by the COMPONENT argument
1286              of CMake's INSTALL commands, and should be further described  by
1287              the following CPack commands:
1288
1289
1290                CPACK_COMPONENTS_ALL - The list of component to install.
1291
1292
1293
1294
1295              The default value of this variable is computed by CPack and con‐
1296              tains all components defined by the project. The user may set it
1297              to only include the specified components.
1298
1299
1300                CPACK_<GENNAME>_COMPONENT_INSTALL - Enable/Disable component install for
1301                CPack generator <GENNAME>.
1302
1303
1304
1305
1306              Each  CPack Generator (RPM, DEB, ARCHIVE, NSIS, DMG, etc...) has
1307              a legacy default behavior. e.g. RPM  builds  monolithic  whereas
1308              NSIS  builds  component.  One can change the default behavior by
1309              setting this variable to 0/1 or OFF/ON.
1310
1311
1312                CPACK_COMPONENTS_GROUPING - Specify how components are grouped for multi-package
1313                component-aware CPack generators.
1314
1315
1316
1317
1318              Some generators like RPM or ARCHIVE family (TGZ, ZIP, ...)  gen‐
1319              erates  several  packages files when asked for component packag‐
1320              ing. They group the component differently depending on the value
1321              of this variable:
1322
1323
1324                - ONE_PER_GROUP (default): creates one package file per component group
1325                - ALL_COMPONENTS_IN_ONE : creates a single package with all (requested) component
1326                - IGNORE : creates one package per component, i.e. IGNORE component group
1327
1328              One can specify different grouping for different CPack generator
1329              by using a CPACK_PROJECT_CONFIG_FILE.
1330
1331
1332                CPACK_COMPONENT_<compName>_DISPLAY_NAME - The name to be displayed for a component.
1333                CPACK_COMPONENT_<compName>_DESCRIPTION - The description of a component.
1334                CPACK_COMPONENT_<compName>_GROUP - The group of a component.
1335                CPACK_COMPONENT_<compName>_DEPENDS - The dependencies (list of components)
1336                on which this component depends.
1337                CPACK_COMPONENT_<compName>_REQUIRED - True is this component is required.
1338
1339              cpack_add_component - Describes a CPack  installation  component
1340              named by the COMPONENT argument to a CMake INSTALL command.
1341
1342
1343                cpack_add_component(compname
1344                                    [DISPLAY_NAME name]
1345                                    [DESCRIPTION description]
1346                                    [HIDDEN | REQUIRED | DISABLED ]
1347                                    [GROUP group]
1348                                    [DEPENDS comp1 comp2 ... ]
1349                                    [INSTALL_TYPES type1 type2 ... ]
1350                                    [DOWNLOADED]
1351                                    [ARCHIVE_FILE filename])
1352
1353
1354
1355
1356              The cmake_add_component command describes an installation compo‐
1357              nent, which the user can opt to install or remove as part of the
1358              graphical installation process. compname is the name of the com‐
1359              ponent, as provided to the COMPONENT argument  of  one  or  more
1360              CMake INSTALL commands.
1361
1362
1363              DISPLAY_NAME  is  the  displayed  name of the component, used in
1364              graphical installers to display the component name.  This  value
1365              can be any string.
1366
1367
1368              DESCRIPTION is an extended description of the component, used in
1369              graphical installers to give  the  user  additional  information
1370              about  the component. Descriptions can span multiple lines using
1371              "\n" as the line separator. Typically, these descriptions should
1372              be no more than a few lines long.
1373
1374
1375              HIDDEN  indicates  that  this  component  will  be hidden in the
1376              graphical installer, so that the  user  cannot  directly  change
1377              whether it is installed or not.
1378
1379
1380              REQUIRED  indicates  that this component is required, and there‐
1381              fore will always be installed. It will be visible in the graphi‐
1382              cal installer, but it cannot be unselected. (Typically, required
1383              components are shown greyed out).
1384
1385
1386              DISABLED indicates that this component should be disabled (unse‐
1387              lected)  by  default.  The user is free to select this component
1388              for installation, unless it is also HIDDEN.
1389
1390
1391              DEPENDS lists the components on which this component depends. If
1392              this  component  is selected, then each of the components listed
1393              must also be selected. The  dependency  information  is  encoded
1394              within the installer itself, so that users cannot install incon‐
1395              sistent sets of components.
1396
1397
1398              GROUP names the component group of which  this  component  is  a
1399              part. If not provided, the component will be a standalone compo‐
1400              nent, not part of any  component  group.  Component  groups  are
1401              described  with  the cpack_add_component_group command, detailed
1402              below.
1403
1404
1405              INSTALL_TYPES lists the installation types of which this  compo‐
1406              nent  is  a  part.  When  one  of  these  installations types is
1407              selected, this component will automatically be selected. Instal‐
1408              lation  types are described with the cpack_add_install_type com‐
1409              mand, detailed below.
1410
1411
1412              DOWNLOADED indicates that this component  should  be  downloaded
1413              on-the-fly  by  the  installer, rather than packaged in with the
1414              installer itself. For more information,  see  the  cpack_config‐
1415              ure_downloads command.
1416
1417
1418              ARCHIVE_FILE  provides  a  name  for the archive file created by
1419              CPack to be used for downloaded  components.  If  not  supplied,
1420              CPack  will  create  a  file with some name based on CPACK_PACK‐
1421              AGE_FILE_NAME and the name of the component.  See  cpack_config‐
1422              ure_downloads for more information.
1423
1424
1425              cpack_add_component_group  -  Describes a group of related CPack
1426              installation components.
1427
1428
1429                cpack_add_component_group(groupname
1430                                         [DISPLAY_NAME name]
1431                                         [DESCRIPTION description]
1432                                         [PARENT_GROUP parent]
1433                                         [EXPANDED]
1434                                         [BOLD_TITLE])
1435
1436
1437
1438
1439              The cpack_add_component_group describes a group of  installation
1440              components,  which will be placed together within the listing of
1441              options.  Typically,  component  groups  allow   the   user   to
1442              select/deselect  all of the components within a single group via
1443              a single group-level option. Use component groups to reduce  the
1444              complexity  of  installers  with  many  options. groupname is an
1445              arbitrary name used to identify the group in the GROUP  argument
1446              of  the  cpack_add_component  command,  which is used to place a
1447              component in a group. The name of the group  must  not  conflict
1448              with the name of any component.
1449
1450
1451              DISPLAY_NAME  is the displayed name of the component group, used
1452              in graphical installers to display  the  component  group  name.
1453              This value can be any string.
1454
1455
1456              DESCRIPTION  is  an extended description of the component group,
1457              used in graphical installers to give the user additional  infor‐
1458              mation  about the components within that group. Descriptions can
1459              span multiple lines using "\n" as the line separator. Typically,
1460              these descriptions should be no more than a few lines long.
1461
1462
1463              PARENT_GROUP, if supplied, names the parent group of this group.
1464              Parent groups are used to establish a hierarchy of groups,  pro‐
1465              viding an arbitrary hierarchy of groups.
1466
1467
1468              EXPANDED indicates that, by default, the group should show up as
1469              "expanded", so that the user immediately sees all of the  compo‐
1470              nents within the group. Otherwise, the group will initially show
1471              up as a single entry.
1472
1473
1474              BOLD_TITLE indicates that the group title should appear in bold,
1475              to call the user's attention to the group.
1476
1477
1478              cpack_add_install_type  - Add a new installation type containing
1479              a set of predefined component selections to  the  graphical  in‐
1480              staller.
1481
1482
1483                cpack_add_install_type(typename
1484                                       [DISPLAY_NAME name])
1485
1486
1487
1488
1489              The  cpack_add_install_type  command  identifies a set of prese‐
1490              lected components that represents  a  common  use  case  for  an
1491              application.  For  example,  a  "Developer"  install  type might
1492              include an application along with its header and library  files,
1493              while an "End user" install type might just include the applica‐
1494              tion's executable. Each component identifies itself with one  or
1495              more   install   types   via   the   INSTALL_TYPES  argument  to
1496              cpack_add_component.
1497
1498
1499              DISPLAY_NAME is the displayed name of the  install  type,  which
1500              will typically show up in a drop-down box within a graphical in‐
1501              staller. This value can be any string.
1502
1503
1504              cpack_configure_downloads - Configure CPack to download selected
1505              components on-the-fly as part of the installation process.
1506
1507
1508                cpack_configure_downloads(site
1509                                          [UPLOAD_DIRECTORY dirname]
1510                                          [ALL]
1511                                          [ADD_REMOVE|NO_ADD_REMOVE])
1512
1513
1514
1515
1516              The   cpack_configure_downloads   command  configures  installa‐
1517              tion-time downloads of selected components. For  each  download‐
1518              able component, CPack will create an archive containing the con‐
1519              tents of that component, which should be uploaded to  the  given
1520              site. When the user selects that component for installation, the
1521              installer will download and extract the component in place. This
1522              feature  is useful for creating small installers that only down‐
1523              load the requested components, saving  bandwidth.  Additionally,
1524              the  installers  are small enough that they will be installed as
1525              part of the normal installation process, and the "Change" button
1526              in  Windows  Add/Remove Programs control panel will allow one to
1527              add or remove  parts  of  the  application  after  the  original
1528              installation.  On Windows, the downloaded-components functional‐
1529              ity requires the ZipDLL plug-in for NSIS, available at:
1530
1531
1532                http://nsis.sourceforge.net/ZipDLL_plug-in
1533
1534
1535
1536
1537              On Mac OS X, installers that download components on-the-fly  can
1538              only  be  built  and  installed on system using Mac OS X 10.5 or
1539              later.
1540
1541
1542              The site argument is a URL where the archives  for  downloadable
1543              components             will             reside,            e.g.,
1544              http://www.cmake.org/files/2.6.1/installer/ All of the  archives
1545              produced by CPack should be uploaded to that location.
1546
1547
1548              UPLOAD_DIRECTORY  is the local directory where CPack will create
1549              the various archives for each of the components. The contents of
1550              this  directory  should  be uploaded to a location accessible by
1551              the URL given in the site argument. If omitted, CPack  will  use
1552              the  directory CPackUploads inside the CMake binary directory to
1553              store the generated archives.
1554
1555
1556              The ALL flag indicates that all components be downloaded. Other‐
1557              wise,  only  those components explicitly marked as DOWNLOADED or
1558              that have a specified ARCHIVE_FILE will be downloaded. Addition‐
1559              ally, the ALL option implies ADD_REMOVE (unless NO_ADD_REMOVE is
1560              specified).
1561
1562
1563              ADD_REMOVE indicates that CPack should install a copy of the in‐
1564              staller  that  can  be  called from Windows' Add/Remove Programs
1565              dialog (via the "Modify" button) to change the set of  installed
1566              components.  NO_ADD_REMOVE  turns off this behavior. This option
1567              is ignored on Mac OS X.
1568
1569
1570       CPackCygwin
1571              Cygwin CPack generator (Cygwin).
1572
1573              The following variable is specific to installers build on and/or
1574              for Cygwin:
1575
1576
1577                 CPACK_CYGWIN_PATCH_NUMBER - The Cygwin patch number.
1578                 FIXME: This documentation is incomplete.
1579                 CPACK_CYGWIN_PATCH_FILE - The Cygwin patch file.
1580                 FIXME: This documentation is incomplete.
1581                 CPACK_CYGWIN_BUILD_SCRIPT - The Cygwin build script.
1582                 FIXME: This documentation is incomplete.
1583
1584
1585       CPackDMG
1586              DragNDrop CPack generator (Mac OS X).
1587
1588              The following variables are specific to the DragNDrop installers
1589              built on Mac OS X:
1590
1591
1592                CPACK_DMG_VOLUME_NAME - The volume name of the generated disk
1593                image. Defaults to CPACK_PACKAGE_FILE_NAME.
1594
1595
1596
1597
1598                CPACK_DMG_FORMAT - The disk image format. Common values are UDRO
1599                (UDIF read-only), UDZO (UDIF zlib-compressed) or UDBZ (UDIF
1600                bzip2-compressed). Refer to hdiutil(1) for more information on
1601                other available formats.
1602
1603
1604
1605
1606                CPACK_DMG_DS_STORE - Path to a custom DS_Store file. This .DS_Store
1607                file e.g. can be used to specify the Finder window
1608                position/geometry and layout (such as hidden toolbars, placement of the
1609                icons etc.). This file has to be generated by the Finder (either manually or
1610                through OSA-script) using a normal folder from which the .DS_Store
1611                file can then be extracted.
1612
1613
1614
1615
1616                CPACK_DMG_BACKGROUND_IMAGE - Path to a background image file. This
1617                file will be used as the background for the Finder Window when the disk
1618                image is opened.  By default no background image is set. The background
1619                image is applied after applying the custom .DS_Store file.
1620
1621
1622
1623
1624                CPACK_COMMAND_HDIUTIL - Path to the hdiutil(1) command used to
1625                operate on disk image files on Mac OS X. This variable can be used
1626                to override the automatically detected command (or specify its
1627                location if the auto-detection fails to find it.)
1628
1629
1630
1631
1632                CPACK_COMMAND_SETFILE - Path to the SetFile(1) command used to set
1633                extended attributes on files and directories on Mac OS X. This
1634                variable can be used to override the automatically detected
1635                command (or specify its location if the auto-detection fails to
1636                find it.)
1637
1638
1639
1640
1641                CPACK_COMMAND_REZ - Path to the Rez(1) command used to compile
1642                resources on Mac OS X. This variable can be used to override the
1643                automatically detected command (or specify its location if the
1644                auto-detection fails to find it.)
1645
1646
1647       CPackDeb
1648              The builtin (binary) CPack Deb generator (Unix only)
1649
1650              CPackDeb may be used to create Deb package using CPack. CPackDeb
1651              is  a  CPack generator thus it uses the CPACK_XXX variables used
1652              by CPack  :  http://www.cmake.org/Wiki/CMake:CPackConfiguration.
1653              CPackDeb  generator  should  work  on any linux host but it will
1654              produce better deb package when Debian specific tools 'dpkg-xxx'
1655              are usable on the build system.
1656
1657
1658              CPackDeb  has  specific  features  which  are  controlled by the
1659              specifics  CPACK_DEBIAN_XXX  variables.You'll  find  a  detailed
1660              usage on the wiki:
1661
1662
1663                http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#DEB_.28UNIX_only.29
1664
1665              However  as  a  handy  reminder  here comes the list of specific
1666              variables:
1667
1668
1669              CPACK_DEBIAN_PACKAGE_NAME
1670
1671
1672                   Mandatory : YES
1673                   Default   : CPACK_PACKAGE_NAME (lower case)
1674                   The debian package summary
1675
1676              CPACK_DEBIAN_PACKAGE_VERSION
1677
1678
1679                   Mandatory : YES
1680                   Default   : CPACK_PACKAGE_VERSION
1681                   The debian package version
1682
1683              CPACK_DEBIAN_PACKAGE_ARCHITECTURE
1684
1685
1686                   Mandatory : YES
1687                   Default   : Output of dpkg --print-architecture (or i386 if dpkg is not found)
1688                   The debian package architecture
1689
1690              CPACK_DEBIAN_PACKAGE_DEPENDS
1691
1692
1693                   Mandatory : NO
1694                   Default   : -
1695                   May be used to set deb dependencies.
1696
1697              CPACK_DEBIAN_PACKAGE_MAINTAINER
1698
1699
1700                   Mandatory : YES
1701                   Default   : CPACK_PACKAGE_CONTACT
1702                   The debian package maintainer
1703
1704              CPACK_DEBIAN_PACKAGE_DESCRIPTION
1705
1706
1707                   Mandatory : YES
1708                   Default   : CPACK_PACKAGE_DESCRIPTION_SUMMARY
1709                   The debian package description
1710
1711              CPACK_DEBIAN_PACKAGE_SECTION
1712
1713
1714                   Mandatory : YES
1715                   Default   : 'devel'
1716                   The debian package section
1717
1718              CPACK_DEBIAN_PACKAGE_PRIORITY
1719
1720
1721                   Mandatory : YES
1722                   Default   : 'optional'
1723                   The debian package priority
1724
1725              CPACK_DEBIAN_PACKAGE_HOMEPAGE
1726
1727
1728                   Mandatory : NO
1729                   Default   : -
1730                   The URL of the web site for this package, preferably (when applicable) the
1731                   site from which the original source can be obtained and any additional
1732                   upstream documentation or information may be found.
1733                   The content of this field is a simple URL without any surrounding
1734                   characters such as <>.
1735
1736              CPACK_DEBIAN_PACKAGE_SHLIBDEPS
1737
1738
1739                   Mandatory : NO
1740                   Default   : OFF
1741                   May be set to ON in order to use dpkg-shlibdeps to generate
1742                   better package dependency list.
1743                   You may need set CMAKE_INSTALL_RPATH toi appropriate value
1744                   if you use this feature, because if you don't dpkg-shlibdeps
1745                   may fail to find your own shared libs.
1746                   See http://www.cmake.org/Wiki/CMake_RPATH_handling.
1747
1748              CPACK_DEBIAN_PACKAGE_DEBUG
1749
1750
1751                   Mandatory : NO
1752                   Default   : -
1753                   May be set when invoking cpack in order to trace debug information
1754                   during CPackDeb run.
1755
1756              CPACK_DEBIAN_PACKAGE_PREDEPENDS
1757
1758
1759                   Mandatory : NO
1760                   Default   : -
1761                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1762                   This field is like Depends, except that it also forces dpkg to complete installation of
1763                   the packages named before even starting the installation of the package which declares
1764                   the pre-dependency.
1765
1766              CPACK_DEBIAN_PACKAGE_ENHANCES
1767
1768
1769                   Mandatory : NO
1770                   Default   : -
1771                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1772                   This field is similar to Suggests but works in the opposite direction.
1773                   It is used to declare that a package can enhance the functionality of another package.
1774
1775              CPACK_DEBIAN_PACKAGE_BREAKS
1776
1777
1778                   Mandatory : NO
1779                   Default   : -
1780                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1781                   When one binary package declares that it breaks another, dpkg will refuse to allow the
1782                   package which declares Breaks be installed unless the broken package is deconfigured first,
1783                   and it will refuse to allow the broken package to be reconfigured.
1784
1785              CPACK_DEBIAN_PACKAGE_CONFLICTS
1786
1787
1788                   Mandatory : NO
1789                   Default   : -
1790                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1791                   When one binary package declares a conflict with another using a Conflicts field,
1792                   dpkg will refuse to allow them to be installed on the system at the same time.
1793
1794              CPACK_DEBIAN_PACKAGE_PROVIDES
1795
1796
1797                   Mandatory : NO
1798                   Default   : -
1799                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1800                   A virtual package is one which appears in the Provides control field of another package.
1801
1802              CPACK_DEBIAN_PACKAGE_REPLACES
1803
1804
1805                   Mandatory : NO
1806                   Default   : -
1807                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1808                   Packages can declare in their control file that they should overwrite
1809                   files in certain other packages, or completely replace other packages.
1810
1811              CPACK_DEBIAN_PACKAGE_RECOMMENDS
1812
1813
1814                   Mandatory : NO
1815                   Default   : -
1816                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1817                   Allows packages to declare a strong, but not absolute, dependency on other packages.
1818
1819              CPACK_DEBIAN_PACKAGE_SUGGESTS
1820
1821
1822                   Mandatory : NO
1823                   Default   : -
1824                   see http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
1825                   Allows packages to declare a suggested package install grouping.
1826
1827              CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
1828
1829
1830                   Mandatory : NO
1831                   Default   : -
1832                   This variable allow advanced user to add custom script to the control.tar.gz
1833                   Typical usage is for conffiles, postinst, postrm, prerm.
1834                   Usage: set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
1835                          "${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
1836
1837
1838       CPackNSIS
1839              CPack NSIS generator specific options
1840
1841
1842
1843
1844              The following variables are specific to the graphical installers
1845              built on Windows using the Nullsoft Installation System.
1846
1847
1848                 CPACK_NSIS_INSTALL_ROOT - The default installation directory presented
1849                 to the end user by the NSIS installer is under this root dir. The full
1850                 directory presented to the end user is:
1851                 ${CPACK_NSIS_INSTALL_ROOT}/${CPACK_PACKAGE_INSTALL_DIRECTORY}
1852
1853
1854
1855
1856                 CPACK_NSIS_MUI_ICON - An icon filename.
1857                 The name of a *.ico file used as the main icon for the generated
1858                 install program.
1859
1860
1861
1862
1863                 CPACK_NSIS_MUI_UNIICON - An icon filename.
1864                 The name of a *.ico file used as the main icon for the generated
1865                 uninstall program.
1866
1867
1868
1869
1870                 CPACK_NSIS_INSTALLER_MUI_ICON_CODE - undocumented.
1871
1872
1873
1874
1875                 CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS - Extra NSIS commands that
1876                 will be added to the beginning of the install Section, before your
1877                 install tree is available on the target system.
1878
1879
1880
1881
1882                 CPACK_NSIS_EXTRA_INSTALL_COMMANDS - Extra NSIS commands that
1883                 will be added to the end of the install Section, after your
1884                 install tree is available on the target system.
1885
1886
1887
1888
1889                 CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS - Extra NSIS commands that will
1890                 be added to the uninstall Section, before your install tree is
1891                 removed from the target system.
1892
1893
1894
1895
1896                 CPACK_NSIS_COMPRESSOR - The arguments that will be passed to the
1897                 NSIS SetCompressor command.
1898
1899
1900
1901
1902                 CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL - Ask about uninstalling
1903                 previous versions first.
1904                 If this is set to "ON", then an installer will look for previous
1905                 installed versions and if one is found, ask the user whether to
1906                 uninstall it before proceeding with the install.
1907
1908
1909
1910
1911                 CPACK_NSIS_MODIFY_PATH - Modify PATH toggle.
1912                 If this is set to "ON", then an extra page
1913                 will appear in the installer that will allow the user to choose
1914                 whether the program directory should be added to the system PATH
1915                 variable.
1916
1917
1918
1919
1920                 CPACK_NSIS_DISPLAY_NAME - The display name string that appears in
1921                 the Windows Add/Remove Program control panel
1922
1923
1924
1925
1926                 CPACK_NSIS_PACKAGE_NAME - The title displayed at the top of the
1927                 installer.
1928
1929
1930
1931
1932                 CPACK_NSIS_INSTALLED_ICON_NAME - A path to the executable that
1933                 contains the installer icon.
1934
1935
1936
1937
1938                 CPACK_NSIS_HELP_LINK - URL to a web site providing assistance in
1939                 installing your application.
1940
1941
1942
1943
1944                 CPACK_NSIS_URL_INFO_ABOUT - URL to a web site providing more
1945                 information about your application.
1946
1947
1948
1949
1950                 CPACK_NSIS_CONTACT - Contact information for questions and comments
1951                 about the installation process.
1952
1953
1954
1955
1956                 CPACK_NSIS_CREATE_ICONS_EXTRA - Additional NSIS commands for
1957                 creating start menu shortcuts.
1958
1959
1960
1961
1962                 CPACK_NSIS_DELETE_ICONS_EXTRA -Additional NSIS commands to
1963                 uninstall start menu shortcuts.
1964
1965
1966
1967
1968                 CPACK_NSIS_EXECUTABLES_DIRECTORY - Creating NSIS start menu links
1969                 assumes that they are in 'bin' unless this variable is set.
1970                 For example, you would set this to 'exec' if your executables are
1971                 in an exec directory.
1972
1973
1974
1975
1976                 CPACK_NSIS_MUI_FINISHPAGE_RUN - Specify an executable to add an option
1977                 to run on the finish page of the NSIS installer.
1978                 CPACK_NSIS_MENU_LINKS - Specify links in [application] menu.
1979                 This should contain a list of pair "link" "link name". The link
1980                 may be an URL or a path relative to installation prefix.
1981                 Like:
1982                   set(CPACK_NSIS_MENU_LINKS
1983                       "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html" "CMake Help"
1984                       "http://www.cmake.org" "CMake Web Site")
1985
1986
1987       CPackPackageMaker
1988              PackageMaker CPack generator (Mac OS X).
1989
1990              The following variable is specific to installers built on Mac OS
1991              X using PackageMaker:
1992
1993
1994                CPACK_OSX_PACKAGE_VERSION - The version of Mac OS X that the
1995                resulting PackageMaker archive should be compatible with. Different
1996                versions of Mac OS X support different
1997                features. For example, CPack can only build component-based
1998                installers for Mac OS X 10.4 or newer, and can only build
1999                installers that download component son-the-fly for Mac OS X 10.5
2000                or newer. If left blank, this value will be set to the minimum
2001                version of Mac OS X that supports the requested features. Set this
2002                variable to some value (e.g., 10.4) only if you want to guarantee
2003                that your installer will work on that version of Mac OS X, and
2004                don't mind missing extra features available in the installer
2005                shipping with later versions of Mac OS X.
2006
2007
2008       CPackRPM
2009              The builtin (binary) CPack RPM generator (Unix only)
2010
2011              CPackRPM may be used to create RPM package using CPack. CPackRPM
2012              is  a  CPack generator thus it uses the CPACK_XXX variables used
2013              by CPack : http://www.cmake.org/Wiki/CMake:CPackConfiguration
2014
2015
2016              However CPackRPM has specific features which are  controlled  by
2017              the  specifics  CPACK_RPM_XXX variables. CPackRPM is a component
2018              aware generator so when CPACK_RPM_COMPONENT_INSTALL is  ON  some
2019              more  CPACK_RPM_<ComponentName>_XXXX  variables  may  be used in
2020              order to have component specific values. Note however that <com‐
2021              ponentName>  refers to the **grouping name**. This may be either
2022              a component name or a component GROUP name. Usually  those  vars
2023              correspond  to  RPM spec file entities, one may find information
2024              about spec files here http://www.rpm.org/wiki/Docs. You'll  find
2025              a detailed usage of CPackRPM on the wiki:
2026
2027
2028                http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29
2029
2030              However  as  a  handy  reminder  here comes the list of specific
2031              variables:
2032
2033
2034                CPACK_RPM_PACKAGE_SUMMARY - The RPM package summary.
2035                   Mandatory : YES
2036                   Default   : CPACK_PACKAGE_DESCRIPTION_SUMMARY
2037                CPACK_RPM_PACKAGE_NAME - The RPM package name.
2038                   Mandatory : YES
2039                   Default   : CPACK_PACKAGE_NAME
2040                CPACK_RPM_PACKAGE_VERSION - The RPM package version.
2041                   Mandatory : YES
2042                   Default   : CPACK_PACKAGE_VERSION
2043                CPACK_RPM_PACKAGE_ARCHITECTURE - The RPM package architecture.
2044                   Mandatory : NO
2045                   Default   : -
2046                   This may be set to "noarch" if you
2047                   know you are building a noarch package.
2048                CPACK_RPM_PACKAGE_RELEASE - The RPM package release.
2049                   Mandatory : YES
2050                   Default   : 1
2051                   This is the numbering of the RPM package
2052                   itself, i.e. the version of the packaging and not the version of the
2053                   content (see CPACK_RPM_PACKAGE_VERSION). One may change the default
2054                   value if the previous packaging was buggy and/or you want to put here
2055                   a fancy Linux distro specific numbering.
2056                CPACK_RPM_PACKAGE_LICENSE - The RPM package license policy.
2057                   Mandatory : YES
2058                   Default   : "unknown"
2059                CPACK_RPM_PACKAGE_GROUP - The RPM package group.
2060                   Mandatory : YES
2061                   Default   : "unknown"
2062                CPACK_RPM_PACKAGE_VENDOR - The RPM package vendor.
2063                   Mandatory : YES
2064                   Default   : CPACK_PACKAGE_VENDOR if set or "unknown"
2065                CPACK_RPM_PACKAGE_URL - The projects URL.
2066                   Mandatory : NO
2067                   Default   : -
2068                CPACK_RPM_PACKAGE_DESCRIPTION - RPM package description.
2069                   Mandatory : YES
2070                   Default   : CPACK_PACKAGE_DESCRIPTION_FILE if set or "no package description available"
2071                CPACK_RPM_COMPRESSION_TYPE - RPM compression type.
2072                   Mandatory : NO
2073                   Default   : -
2074                   May be used to override RPM compression type to be used
2075                   to build the RPM. For example some Linux distribution now default
2076                   to lzma or xz compression whereas older cannot use such RPM.
2077                   Using this one can enforce compression type to be used.
2078                   Possible value are: lzma, xz, bzip2 and gzip.
2079                CPACK_RPM_PACKAGE_REQUIRES - RPM spec requires field.
2080                   Mandatory : NO
2081                   Default   : -
2082                   May be used to set RPM dependencies (requires).
2083                   Note that you must enclose the complete requires string between quotes,
2084                   for example:
2085                   set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8")
2086                   The required package list of an RPM file could be printed with
2087                   rpm -qp --requires file.rpm
2088                CPACK_RPM_PACKAGE_SUGGESTS - RPM spec suggest field.
2089                   Mandatory : NO
2090                   Default   : -
2091                   May be used to set weak RPM dependencies (suggests).
2092                   Note that you must enclose the complete requires string between quotes.
2093                CPACK_RPM_PACKAGE_PROVIDES - RPM spec provides field.
2094                   Mandatory : NO
2095                   Default   : -
2096                   May be used to set RPM dependencies (provides).
2097                   The provided package list of an RPM file could be printed with
2098                   rpm -qp --provides file.rpm
2099                CPACK_RPM_PACKAGE_OBSOLETES - RPM spec obsoletes field.
2100                   Mandatory : NO
2101                   Default   : -
2102                   May be used to set RPM packages that are obsoleted by this one.
2103                CPACK_RPM_PACKAGE_RELOCATABLE - build a relocatable RPM.
2104                   Mandatory : NO
2105                   Default   : CPACK_PACKAGE_RELOCATABLE
2106                   If this variable is set to TRUE or ON CPackRPM will try
2107                   to build a relocatable RPM package. A relocatable RPM may
2108                   be installed using rpm --prefix or --relocate in order to
2109                   install it at an alternate place see rpm(8).
2110                   Note that currently this may fail if CPACK_SET_DESTDIR is set to ON.
2111                   If CPACK_SET_DESTDIR is set then you will get a warning message
2112                   but if there is file installed with absolute path you'll get
2113                   unexpected behavior.
2114                CPACK_RPM_SPEC_INSTALL_POST - [deprecated].
2115                   Mandatory : NO
2116                   Default   : -
2117                   This way of specifying post-install script is deprecated use
2118                   CPACK_RPM_POST_INSTALL_SCRIPT_FILE
2119                   May be used to set an RPM post-install command inside the spec file.
2120                   For example setting it to "/bin/true" may be used to prevent
2121                   rpmbuild to strip binaries.
2122                CPACK_RPM_SPEC_MORE_DEFINE - RPM extended spec definitions lines.
2123                   Mandatory : NO
2124                   Default   : -
2125                   May be used to add any %define lines to the generated spec file.
2126                CPACK_RPM_PACKAGE_DEBUG - Toggle CPackRPM debug output.
2127                   Mandatory : NO
2128                   Default   : -
2129                   May be set when invoking cpack in order to trace debug information
2130                   during CPack RPM run. For example you may launch CPack like this
2131                   cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
2132                CPACK_RPM_USER_BINARY_SPECFILE - A user provided spec file.
2133                   Mandatory : NO
2134                   Default   : -
2135                   May be set by the user in order to specify a USER binary spec file
2136                   to be used by CPackRPM instead of generating the file.
2137                   The specified file will be processed by configure_file( @ONLY).
2138                   One can provide a component specific file by setting
2139                   CPACK_RPM_<componentName>_USER_BINARY_SPECFILE.
2140                CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE - Spec file template.
2141                   Mandatory : NO
2142                   Default   : -
2143                   If set CPack will generate a template for USER specified binary
2144                   spec file and stop with an error. For example launch CPack like this
2145                   cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
2146                   The user may then use this file in order to hand-craft is own
2147                   binary spec file which may be used with CPACK_RPM_USER_BINARY_SPECFILE.
2148                CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
2149                CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE
2150                   Mandatory : NO
2151                   Default   : -
2152                   May be used to embed a pre (un)installation script in the spec file.
2153                   The refered script file(s) will be read and directly
2154                   put after the %pre or %preun section
2155                   If CPACK_RPM_COMPONENT_INSTALL is set to ON the (un)install script for
2156                   each component can be overridden with
2157                   CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE and
2158                   CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE
2159                   One may verify which scriptlet has been included with
2160                    rpm -qp --scripts  package.rpm
2161                CPACK_RPM_POST_INSTALL_SCRIPT_FILE
2162                CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
2163                   Mandatory : NO
2164                   Default   : -
2165                   May be used to embed a post (un)installation script in the spec file.
2166                   The refered script file(s) will be read and directly
2167                   put after the %post or %postun section
2168                   If CPACK_RPM_COMPONENT_INSTALL is set to ON the (un)install script for
2169                   each component can be overridden with
2170                   CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE and
2171                   CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE
2172                   One may verify which scriptlet has been included with
2173                    rpm -qp --scripts  package.rpm
2174                CPACK_RPM_USER_FILELIST
2175                CPACK_RPM_<COMPONENT>_USER_FILELIST
2176                   Mandatory : NO
2177                   Default   : -
2178                   May be used to explicitly specify %(<directive>) file line
2179                   in the spec file. Like %config(noreplace) or any other directive
2180                   that be found in the %files section. Since CPackRPM is generating
2181                   the list of files (and directories) the user specified files of
2182                   the CPACK_RPM_<COMPONENT>_USER_FILELIST list will be removed from the generated list.
2183                CPACK_RPM_CHANGELOG_FILE - RPM changelog file.
2184                   Mandatory : NO
2185                   Default   : -
2186                   May be used to embed a changelog in the spec file.
2187                   The refered file will be read and directly put after the %changelog
2188                   section.
2189                CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST - list of path to be excluded.
2190                   Mandatory : NO
2191                   Default   : /etc /etc/init.d /usr /usr/share /usr/share/doc /usr/bin /usr/lib /usr/lib64 /usr/include
2192                   May be used to exclude path (directories or files) from the auto-generated
2193                   list of paths discovered by CPack RPM. The defaut value contains a reasonable
2194                   set of values if the variable is not defined by the user. If the variable
2195                   is defined by the user then CPackRPM will NOT any of the default path.
2196                   If you want to add some path to the default list then you can use
2197                   CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION variable.
2198                CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - additional list of path to be excluded.
2199                   Mandatory : NO
2200                   Default   : -
2201                   May be used to add more exclude path (directories or files) from the initial
2202                   default list of excluded paths. See CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST.
2203
2204
2205       CPackWIX
2206              CPack WiX generator specific options
2207
2208
2209
2210
2211              The following variables are specific to the installers built  on
2212              Windows using WiX.
2213
2214
2215                CPACK_WIX_UPGRADE_GUID - Upgrade GUID (Product/@UpgradeCode)
2216
2217
2218
2219
2220              Will be automatically generated unless explicitly provided.
2221
2222
2223              It  should  be  explicitly set to a constant generated gloabally
2224              unique identifier (GUID) to allow  your  installers  to  replace
2225              existing installations that use the same GUID.
2226
2227
2228              You  may for example explicitly set this variable in your CMake‐
2229              Lists.txt to the value that has been generated per default.  You
2230              should not use GUIDs that you did not generate yourself or which
2231              may belong to other projects.
2232
2233
2234              A  GUID  shall  have  the   following   fixed   length   syntax:
2235              XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
2236
2237
2238                (each X represents an uppercase hexadecimal digit)
2239                CPACK_WIX_PRODUCT_GUID - Product GUID (Product/@Id)
2240
2241
2242
2243
2244              Will be automatically generated unless explicitly provided.
2245
2246
2247              If  explicitly provided this will set the Product Id of your in‐
2248              staller.
2249
2250
2251              The installer will abort if it detects a pre-existing  installa‐
2252              tion that uses the same GUID.
2253
2254
2255              The    GUID    shall    use    the    syntax    described    for
2256              CPACK_WIX_UPGRADE_GUID.
2257
2258
2259                CPACK_WIX_LICENSE_RTF - RTF License File
2260
2261
2262
2263
2264              If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is  used
2265              as-is.
2266
2267
2268              If  CPACK_RESOURCE_FILE_LICENSE  has  an  .txt  extension  it is
2269              implicitly converted to RTF by the WiX Generator.
2270
2271
2272              With CPACK_WIX_LICENSE_RTF you can  override  the  license  file
2273              used by the WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is
2274              in an unsupported format or the .txt -> .rtf conversion does not
2275              work as expected.
2276
2277
2278
2279
2280
2281              CPACK_WIX_PRODUCT_ICON - The Icon shown next to the program name
2282              in Add/Remove programs.
2283
2284
2285              If set, this icon is used in place of the default icon.
2286
2287
2288
2289
2290
2291              CPACK_WIX_UI_BANNER - The bitmap will appear at the top  of  all
2292              installer pages other than the welcome and completion dialogs.
2293
2294
2295              If set, this image will replace the default banner image.
2296
2297
2298              This image must be 493 by 58 pixels.
2299
2300
2301
2302
2303
2304              CPACK_WIX_UI_DIALOG  - Background bitmap used on the welcome and
2305              completion dialogs.
2306
2307
2308              If this variable is set, the installer will replace the  default
2309              dialog image.
2310
2311
2312              This image must be 493 by 312 pixels.
2313
2314
2315
2316
2317
2318              CPACK_WIX_PROGRAM_MENU_FOLDER  -  Start  menu  folder  name  for
2319              launcher.
2320
2321
2322              If this variable  is  not  set,  it  will  be  initialized  with
2323              CPACK_PACKAGE_NAME
2324
2325
2326              CPACK_WIX_CULTURES - Language(s) of the installer
2327
2328
2329              Languages  are compiled into the WixUI extension library. To use
2330              them, simply provide the name of the culture.   If  you  specify
2331              more  than one culture identifier in a comma or semicolon delim‐
2332              ited list, the first one that is found will be  used.   You  can
2333              find  a  list  of  supported  languages  at:  http://wix.source
2334              forge.net/manual-wix3/WixUI_localization.htm
2335
2336
2337              CPACK_WIX_TEMPLATE - Template file for WiX generation
2338
2339
2340              If this variable is set, the specified template will be used  to
2341              generate  the  WiX wxs file. This should be used if further cus‐
2342              tomization of the output is required.
2343
2344
2345              If this variable is not set, the default MSI  template  included
2346              with CMake will be used.
2347
2348
2349
2350       CTest  Configure a project for testing with CTest/CDash
2351
2352              Include  this module in the top CMakeLists.txt file of a project
2353              to enable testing with CTest and dashboard submissions to CDash:
2354
2355
2356                 project(MyProject)
2357                 ...
2358                 include(CTest)
2359
2360              The module automatically creates  a  BUILD_TESTING  option  that
2361              selects  whether  to  enable  testing  support  (ON by default).
2362              After including the module, use code like
2363
2364
2365                 if(BUILD_TESTING)
2366                   # ... CMake code to create tests ...
2367                 endif()
2368
2369              to creating tests when testing is enabled.
2370
2371
2372              To enable submissions to a  CDash  server,  create  a  CTestCon‐
2373              fig.cmake file at the top of the project with content such as
2374
2375
2376                 set(CTEST_PROJECT_NAME "MyProject")
2377                 set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
2378                 set(CTEST_DROP_METHOD "http")
2379                 set(CTEST_DROP_SITE "my.cdash.org")
2380                 set(CTEST_DROP_LOCATION "/submit.php?project=MyProject")
2381                 set(CTEST_DROP_SITE_CDASH TRUE)
2382
2383              (the  CDash server can provide the file to a project administra‐
2384              tor who configures 'MyProject'). Settings in the config file are
2385              shared  by  both  this  CTest  module and the CTest command-line
2386              tool's dashboard script mode (ctest -S).
2387
2388
2389              While building a project for submission to  CDash,  CTest  scans
2390              the  build  output for errors and warnings and reports them with
2391              surrounding context from the build log.  This  generic  approach
2392              works  for  all build tools, but does not give details about the
2393              command invocation that produced a given problem.  One  may  get
2394              more detailed reports by adding
2395
2396
2397                 set(CTEST_USE_LAUNCHERS 1)
2398
2399              to the CTestConfig.cmake file.  When this option is enabled, the
2400              CTest module tells CMake's Makefile generators to  invoke  every
2401              command  in  the generated build system through a CTest launcher
2402              program.  (Currently the CTEST_USE_LAUNCHERS option  is  ignored
2403              on   non-Makefile  generators.)   During  a  manual  build  each
2404              launcher transparently runs the  command  it  wraps.   During  a
2405              CTest-driven build for submission to CDash each launcher reports
2406              detailed information when its command fails or  warns.  (Setting
2407              CTEST_USE_LAUNCHERS in CTestConfig.cmake is convenient, but also
2408              adds the launcher overhead even  for  manual  builds.   One  may
2409              instead  set  it  in  a CTest dashboard script and add it to the
2410              CMake cache for the build tree.)
2411
2412
2413       CTestScriptMode
2414
2415
2416              This file is read by ctest in script mode (-S)
2417
2418
2419       CTestUseLaunchers
2420              Set the RULE_LAUNCH_* global properties when CTEST_USE_LAUNCHERS
2421              is on.
2422
2423              CTestUseLaunchers    is    automatically   included   when   you
2424              include(CTest). However, it is split out  into  its  own  module
2425              file  so  projects can use the CTEST_USE_LAUNCHERS functionality
2426              independently.
2427
2428
2429              To use launchers, set CTEST_USE_LAUNCHERS to ON in  a  ctest  -S
2430              dashboard  script, and then also set it in the cache of the con‐
2431              figured project. Both cmake and ctest need to know the value  of
2432              it  for  the  launchers to work properly. CMake needs to know in
2433              order to generate proper build rules, and  ctest,  in  order  to
2434              produce the proper error and warning analysis.
2435
2436
2437              For  convenience, you may set the ENV variable CTEST_USE_LAUNCH‐
2438              ERS_DEFAULT in your ctest -S script, too. Then, as long as  your
2439              CMakeLists uses include(CTest) or include(CTestUseLaunchers), it
2440              will  use  the  value  of  the  ENV  variable  to  initialize  a
2441              CTEST_USE_LAUNCHERS cache variable. This cache variable initial‐
2442              ization  only  occurs  if  CTEST_USE_LAUNCHERS  is  not  already
2443              defined.
2444
2445
2446       CheckCCompilerFlag
2447              Check whether the C compiler supports a given flag.
2448
2449              CHECK_C_COMPILER_FLAG(<flag> <var>)
2450
2451
2452                <flag> - the compiler flag
2453                <var>  - variable to store the result
2454
2455              This internally calls the check_c_source_compiles macro and sets
2456              CMAKE_REQUIRED_DEFINITIONS to <flag>. See help for CheckCSource‐
2457              Compiles  for  a  listing of variables that can otherwise modify
2458              the build. The result only tells that the compiler does not give
2459              an  error  message  when it encounters the flag. If the flag has
2460              any effect or even a specific one is beyond the  scope  of  this
2461              module.
2462
2463
2464       CheckCSourceCompiles
2465              Check if given C source compiles and links into an executable
2466
2467              CHECK_C_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>])
2468
2469
2470                <code>       - source code to try to compile, must define 'main'
2471                <var>        - variable to store whether the source code compiled
2472                <fail-regex> - fail if test output matches this regex
2473
2474              The  following variables may be set before calling this macro to
2475              modify the way the check is run:
2476
2477
2478                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2479                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2480                CMAKE_REQUIRED_INCLUDES = list of include directories
2481                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2482
2483
2484       CheckCSourceRuns
2485              Check if the given C source code compiles and runs.
2486
2487              CHECK_C_SOURCE_RUNS(<code> <var>)
2488
2489
2490                <code>   - source code to try to compile
2491                <var>    - variable to store the result
2492                           (1 for success, empty for failure)
2493
2494              The following variables may be set before calling this macro  to
2495              modify the way the check is run:
2496
2497
2498                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2499                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2500                CMAKE_REQUIRED_INCLUDES = list of include directories
2501                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2502
2503
2504       CheckCXXCompilerFlag
2505              Check whether the CXX compiler supports a given flag.
2506
2507              CHECK_CXX_COMPILER_FLAG(<flag> <var>)
2508
2509
2510                <flag> - the compiler flag
2511                <var>  - variable to store the result
2512
2513              This  internally  calls  the check_cxx_source_compiles macro and
2514              sets CMAKE_REQUIRED_DEFINITIONS to <flag>. See help  for  Check‐
2515              CXXSourceCompiles  for a listing of variables that can otherwise
2516              modify the build. The result only tells that the  compiler  does
2517              not  give  an  error message when it encounters the flag. If the
2518              flag has any effect or even a specific one is beyond  the  scope
2519              of this module.
2520
2521
2522       CheckCXXSourceCompiles
2523              Check if given C++ source compiles and links into an executable
2524
2525              CHECK_CXX_SOURCE_COMPILES(<code>        <var>        [FAIL_REGEX
2526              <fail-regex>])
2527
2528
2529                <code>       - source code to try to compile, must define 'main'
2530                <var>        - variable to store whether the source code compiled
2531                <fail-regex> - fail if test output matches this regex
2532
2533              The following variables may be set before calling this macro  to
2534              modify the way the check is run:
2535
2536
2537                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2538                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2539                CMAKE_REQUIRED_INCLUDES = list of include directories
2540                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2541
2542
2543       CheckCXXSourceRuns
2544              Check if the given C++ source code compiles and runs.
2545
2546              CHECK_CXX_SOURCE_RUNS(<code> <var>)
2547
2548
2549                <code>   - source code to try to compile
2550                <var>    - variable to store the result
2551                           (1 for success, empty for failure)
2552
2553              The  following variables may be set before calling this macro to
2554              modify the way the check is run:
2555
2556
2557                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2558                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2559                CMAKE_REQUIRED_INCLUDES = list of include directories
2560                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2561
2562
2563       CheckCXXSymbolExists
2564              Check if a symbol exists as a function, variable,  or  macro  in
2565              C++
2566
2567              CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>)
2568
2569
2570              Check  that  the  <symbol>  is  available  after including given
2571              header <files> and store the result in  a  <variable>.   Specify
2572              the list of files in one argument as a semicolon-separated list.
2573              CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files,  as
2574              opposed to CHECK_SYMBOL_EXISTS(), which works only for C.
2575
2576
2577              If  the  header files define the symbol as a macro it is consid‐
2578              ered available and assumed to work.  If the header files declare
2579              the  symbol  as a function or variable then the symbol must also
2580              be available for linking.  If the symbol is a type or enum value
2581              it  will  not  be  recognized  (consider  using CheckTypeSize or
2582              CheckCSourceCompiles).
2583
2584
2585              The following variables may be set before calling this macro  to
2586              modify the way the check is run:
2587
2588
2589                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2590                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2591                CMAKE_REQUIRED_INCLUDES = list of include directories
2592                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2593
2594
2595       CheckFortranFunctionExists
2596              macro which checks if the Fortran function exists
2597
2598              CHECK_FORTRAN_FUNCTION_EXISTS(FUNCTION VARIABLE)
2599
2600
2601                FUNCTION - the name of the Fortran function
2602                VARIABLE - variable to store the result
2603
2604
2605
2606
2607              The  following variables may be set before calling this macro to
2608              modify the way the check is run:
2609
2610
2611                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2612
2613
2614       CheckFunctionExists
2615              Check if a C function can be linked
2616
2617              CHECK_FUNCTION_EXISTS(<function> <variable>)
2618
2619
2620              Check that the <function> is provided by libraries on the system
2621              and store the result in a <variable>.  This does not verify that
2622              any system header file declares the function, only that  it  can
2623              be found at link time (consider using CheckSymbolExists).
2624
2625
2626              The  following variables may be set before calling this macro to
2627              modify the way the check is run:
2628
2629
2630                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2631                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2632                CMAKE_REQUIRED_INCLUDES = list of include directories
2633                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2634
2635
2636       CheckIncludeFile
2637              macro which checks the include file exists.
2638
2639              CHECK_INCLUDE_FILE(INCLUDE VARIABLE)
2640
2641
2642                INCLUDE  - name of include file
2643                VARIABLE - variable to return result
2644
2645
2646
2647
2648              an optional third argument is the CFlags to add to  the  compile
2649              line or you can use CMAKE_REQUIRED_FLAGS
2650
2651
2652              The  following variables may be set before calling this macro to
2653              modify the way the check is run:
2654
2655
2656                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2657                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2658                CMAKE_REQUIRED_INCLUDES = list of include directories
2659
2660
2661
2662
2663
2664       CheckIncludeFileCXX
2665              Check if the include file exists.
2666
2667                CHECK_INCLUDE_FILE_CXX(INCLUDE VARIABLE)
2668
2669
2670
2671
2672                INCLUDE  - name of include file
2673                VARIABLE - variable to return result
2674
2675
2676
2677
2678              An optional third argument is the CFlags to add to  the  compile
2679              line or you can use CMAKE_REQUIRED_FLAGS.
2680
2681
2682              The  following variables may be set before calling this macro to
2683              modify the way the check is run:
2684
2685
2686                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2687                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2688                CMAKE_REQUIRED_INCLUDES = list of include directories
2689
2690
2691
2692
2693
2694       CheckIncludeFiles
2695              Check if the files can be included
2696
2697
2698
2699
2700              CHECK_INCLUDE_FILES(INCLUDE VARIABLE)
2701
2702
2703                INCLUDE  - list of files to include
2704                VARIABLE - variable to return result
2705
2706
2707
2708
2709              The following variables may be set before calling this macro  to
2710              modify the way the check is run:
2711
2712
2713                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2714                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2715                CMAKE_REQUIRED_INCLUDES = list of include directories
2716
2717
2718       CheckLanguage
2719              Check if a language can be enabled
2720
2721              Usage:
2722
2723
2724                check_language(<lang>)
2725
2726              where  <lang>  is  a  language that may be passed to enable_lan‐
2727              guage() such as "Fortran".  If CMAKE_<lang>_COMPILER is  already
2728              defined the check does nothing.  Otherwise it tries enabling the
2729              language  in  a  test  project.   The  result   is   cached   in
2730              CMAKE_<lang>_COMPILER  as  the  compiler that was found, or NOT‐
2731              FOUND if the language cannot be enabled.
2732
2733
2734              Example:
2735
2736
2737                check_language(Fortran)
2738                if(CMAKE_Fortran_COMPILER)
2739                  enable_language(Fortran)
2740                else()
2741                  message(STATUS "No Fortran support")
2742                endif()
2743
2744
2745       CheckLibraryExists
2746              Check if the function exists.
2747
2748              CHECK_LIBRARY_EXISTS (LIBRARY FUNCTION LOCATION VARIABLE)
2749
2750
2751                LIBRARY  - the name of the library you are looking for
2752                FUNCTION - the name of the function
2753                LOCATION - location where the library should be found
2754                VARIABLE - variable to store the result
2755
2756
2757
2758
2759              The following variables may be set before calling this macro  to
2760              modify the way the check is run:
2761
2762
2763                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2764                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2765                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2766
2767
2768       CheckPrototypeDefinition
2769              Check if the protoype we expect is correct.
2770
2771              check_prototype_definition(FUNCTION   PROTOTYPE   RETURN  HEADER
2772              VARIABLE)
2773
2774
2775                FUNCTION - The name of the function (used to check if prototype exists)
2776                PROTOTYPE- The prototype to check.
2777                RETURN - The return value of the function.
2778                HEADER - The header files required.
2779                VARIABLE - The variable to store the result.
2780
2781              Example:
2782
2783
2784                check_prototype_definition(getpwent_r
2785                 "struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)"
2786                 "NULL"
2787                 "unistd.h;pwd.h"
2788                 SOLARIS_GETPWENT_R)
2789
2790              The following variables may be set before calling this macro  to
2791              modify the way the check is run:
2792
2793
2794                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2795                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2796                CMAKE_REQUIRED_INCLUDES = list of include directories
2797                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2798
2799
2800       CheckStructHasMember
2801              Check  if  the  given  struct  or class has the specified member
2802              variable
2803
2804              CHECK_STRUCT_HAS_MEMBER (STRUCT MEMBER HEADER VARIABLE)
2805
2806
2807                STRUCT - the name of the struct or class you are interested in
2808                MEMBER - the member which existence you want to check
2809                HEADER - the header(s) where the prototype should be declared
2810                VARIABLE - variable to store the result
2811
2812
2813
2814
2815              The following variables may be set before calling this macro  to
2816              modify the way the check is run:
2817
2818
2819                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2820                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2821                CMAKE_REQUIRED_INCLUDES = list of include directories
2822
2823
2824
2825
2826              Example:    CHECK_STRUCT_HAS_MEMBER("struct    timeval"   tv_sec
2827              sys/select.h HAVE_TIMEVAL_TV_SEC)
2828
2829
2830       CheckSymbolExists
2831              Check if a symbol exists as a function, variable, or macro
2832
2833              CHECK_SYMBOL_EXISTS(<symbol> <files> <variable>)
2834
2835
2836              Check that the  <symbol>  is  available  after  including  given
2837              header  <files>  and  store the result in a <variable>.  Specify
2838              the list of files in one argument as a semicolon-separated list.
2839
2840
2841              If the header files define the symbol as a macro it  is  consid‐
2842              ered available and assumed to work.  If the header files declare
2843              the symbol as a function or variable then the symbol  must  also
2844              be available for linking.  If the symbol is a type or enum value
2845              it will not  be  recognized  (consider  using  CheckTypeSize  or
2846              CheckCSourceCompiles).  If  the  check  needs to be done in C++,
2847              consider using CHECK_CXX_SYMBOL_EXISTS(), which does the same as
2848              CHECK_SYMBOL_EXISTS(), but in C++.
2849
2850
2851              The  following variables may be set before calling this macro to
2852              modify the way the check is run:
2853
2854
2855                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2856                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2857                CMAKE_REQUIRED_INCLUDES = list of include directories
2858                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2859
2860
2861       CheckTypeSize
2862              Check sizeof a type
2863
2864                CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY])
2865
2866              Check if the type exists and  determine  its  size.  On  return,
2867              "HAVE_${VARIABLE}" holds the existence of the type, and "${VARI‐
2868              ABLE}" holds one of the following:
2869
2870
2871                 <size> = type has non-zero size <size>
2872                 "0"    = type has arch-dependent size (see below)
2873                 ""     = type does not exist
2874
2875              Furthermore, the variable "${VARIABLE}_CODE" holds C  preproces‐
2876              sor  code  to  define the macro "${VARIABLE}" to the size of the
2877              type, or leave the macro undefined if the type does not exist.
2878
2879
2880              The variable "${VARIABLE}" may be "0"  when  CMAKE_OSX_ARCHITEC‐
2881              TURES  has  multiple  architectures  for building OS X universal
2882              binaries. This indicates that the type size varies across archi‐
2883              tectures.  In this case "${VARIABLE}_CODE" contains C preproces‐
2884              sor tests mapping from each architecture  macro  to  the  corre‐
2885              sponding type size. The list of architecture macros is stored in
2886              "${VARIABLE}_KEYS", and the value for  each  key  is  stored  in
2887              "${VARIABLE}-${KEY}".
2888
2889
2890              If  the BUILTIN_TYPES_ONLY option is not given, the macro checks
2891              for headers <sys/types.h>, <stdint.h>, and <stddef.h>, and saves
2892              results  in  HAVE_SYS_TYPES_H, HAVE_STDINT_H, and HAVE_STDDEF_H.
2893              The type size check automatically includes the  available  head‐
2894              ers, thus supporting checks of types defined in the headers.
2895
2896
2897              Despite  the  name of the macro you may use it to check the size
2898              of more complex expressions, too. To check e.g. for the size  of
2899              a struct member you can do something like this:
2900
2901
2902                check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
2903
2904
2905
2906
2907              The  following variables may be set before calling this macro to
2908              modify the way the check is run:
2909
2910
2911                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2912                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2913                CMAKE_REQUIRED_INCLUDES = list of include directories
2914                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2915                CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include
2916
2917
2918       CheckVariableExists
2919              Check if the variable exists.
2920
2921                CHECK_VARIABLE_EXISTS(VAR VARIABLE)
2922
2923
2924
2925
2926                VAR      - the name of the variable
2927                VARIABLE - variable to store the result
2928
2929
2930
2931
2932              This macro is only for C variables.
2933
2934
2935              The following variables may be set before calling this macro  to
2936              modify the way the check is run:
2937
2938
2939                CMAKE_REQUIRED_FLAGS = string of compile command line flags
2940                CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
2941                CMAKE_REQUIRED_LIBRARIES = list of libraries to link
2942
2943
2944       Dart   Configure  a  project  for  testing  with  CTest or old Dart Tcl
2945              Client
2946
2947              This file is the backwards-compatibility version  of  the  CTest
2948              module.  It supports using the old Dart 1 Tcl client for driving
2949              dashboard submissions as well as testing with CTest.  This  mod‐
2950              ule  should be included in the CMakeLists.txt file at the top of
2951              a project.  Typical usage:
2952
2953
2954                include(Dart)
2955                if(BUILD_TESTING)
2956                  # ... testing related CMake code ...
2957                endif()
2958
2959              The BUILD_TESTING option is created by the Dart module to deter‐
2960              mine  whether testing support should be enabled.  The default is
2961              ON.
2962
2963
2964       DeployQt4
2965              Functions to help assemble a standalone Qt4 executable.
2966
2967              A collection of CMake utility functions useful for deploying Qt4
2968              executables.
2969
2970
2971              The following functions are provided by this module:
2972
2973
2974                 write_qt4_conf
2975                 resolve_qt4_paths
2976                 fixup_qt4_executable
2977                 install_qt4_plugin_path
2978                 install_qt4_plugin
2979                 install_qt4_executable
2980
2981              Requires  CMake 2.6 or greater because it uses function and PAR‐
2982              ENT_SCOPE. Also depends on BundleUtilities.cmake.
2983
2984
2985                WRITE_QT4_CONF(<qt_conf_dir> <qt_conf_contents>)
2986
2987              Writes  a  qt.conf  file  with   the   <qt_conf_contents>   into
2988              <qt_conf_dir>.
2989
2990
2991                RESOLVE_QT4_PATHS(<paths_var> [<executable_path>])
2992
2993              Loop  through  <paths_var>  list  and if any don't exist resolve
2994              them relative to the  <executable_path>  (if  supplied)  or  the
2995              CMAKE_INSTALL_PREFIX.
2996
2997
2998                FIXUP_QT4_EXECUTABLE(<executable> [<qtplugins> <libs> <dirs> <plugins_dir> <request_qt_conf>])
2999
3000              Copies  Qt  plugins,  writes a Qt configuration file (if needed)
3001              and fixes up a Qt4 executable using  BundleUtilities  so  it  is
3002              standalone and can be drag-and-drop copied to another machine as
3003              long as all of the system libraries are compatible.
3004
3005
3006              <executable> should point to the executable to be fixed-up.
3007
3008
3009              <qtplugins> should contain a list of the names or paths  of  any
3010              Qt plugins to be installed.
3011
3012
3013              <libs> will be passed to BundleUtilities and should be a list of
3014              any already installed plugins, libraries or executables to  also
3015              be fixed-up.
3016
3017
3018              <dirs>  will be passed to BundleUtilities and should contain and
3019              directories to be searched to find library dependencies.
3020
3021
3022              <plugins_dir> allows an custom plugins directory to be used.
3023
3024
3025              <request_qt_conf> will force a qt.conf file to be  written  even
3026              if not needed.
3027
3028
3029                INSTALL_QT4_PLUGIN_PATH(plugin executable copy installed_plugin_path_var <plugins_dir> <component> <configurations>)
3030
3031              Install  (or  copy)  a  resolved <plugin> to the default plugins
3032              directory (or <plugins_dir>) relative to <executable> and  store
3033              the result in <installed_plugin_path_var>.
3034
3035
3036              If  <copy> is set to TRUE then the plugins will be copied rather
3037              than installed. This is to allow this module to be used at CMake
3038              time rather than install time.
3039
3040
3041              If <component> is set then anything installed will use this COM‐
3042              PONENT.
3043
3044
3045                INSTALL_QT4_PLUGIN(plugin executable copy installed_plugin_path_var <plugins_dir> <component>)
3046
3047              Install (or copy) an unresolved <plugin> to the default  plugins
3048              directory  (or <plugins_dir>) relative to <executable> and store
3049              the result in <installed_plugin_path_var>. See documentation  of
3050              INSTALL_QT4_PLUGIN_PATH.
3051
3052
3053                INSTALL_QT4_EXECUTABLE(<executable> [<qtplugins> <libs> <dirs> <plugins_dir> <request_qt_conf> <component>])
3054
3055              Installs  Qt plugins, writes a Qt configuration file (if needed)
3056              and fixes up a Qt4 executable using  BundleUtilities  so  it  is
3057              standalone and can be drag-and-drop copied to another machine as
3058              long as all of the system libraries  are  compatible.  The  exe‐
3059              cutable  will  be  fixed-up  at install time. <component> is the
3060              COMPONENT used for bundle fixup  and  plugin  installation.  See
3061              documentation of FIXUP_QT4_BUNDLE.
3062
3063
3064       Documentation
3065              DocumentationVTK.cmake
3066
3067              This  file provides support for the VTK documentation framework.
3068              It relies on several tools (Doxygen, Perl, etc).
3069
3070
3071       ExternalData
3072              Manage data files stored outside source tree
3073
3074              Use this module to unambiguously  reference  data  files  stored
3075              outside  the source tree and fetch them at build time from arbi‐
3076              trary local and remote content-addressed  locations.   Functions
3077              provided  by  this  module  recognize  arguments with the syntax
3078              "DATA{<name>}" as references to external data, replace them with
3079              full paths to local copies of those data, and create build rules
3080              to fetch and update the local copies.
3081
3082
3083              The DATA{} syntax is literal and the <name> is a full  or  rela‐
3084              tive  path within the source tree.  The source tree must contain
3085              either a real data  file  at  <name>  or  a  "content  link"  at
3086              <name><ext>  containing  a  hash  of  the real file using a hash
3087              algorithm corresponding to <ext>.   For  example,  the  argument
3088              "DATA{img.png}" may be satisfied by either a real "img.png" file
3089              in the current source directory or a "img.png.md5" file contain‐
3090              ing its MD5 sum.
3091
3092
3093              The  'ExternalData_Expand_Arguments'  function  evaluates DATA{}
3094              references in its arguments and constructs a new list  of  argu‐
3095              ments:
3096
3097
3098                ExternalData_Expand_Arguments(
3099                  <target>   # Name of data management target
3100                  <outVar>   # Output variable
3101                  [args...]  # Input arguments, DATA{} allowed
3102                  )
3103
3104              It  replaces  each DATA{} reference in an argument with the full
3105              path of a real data file on disk that will exist after the <tar‐
3106              get> builds.
3107
3108
3109              The  'ExternalData_Add_Test'  function  wraps  around  the CMake
3110              add_test() command but supports DATA{} references in  its  argu‐
3111              ments:
3112
3113
3114                ExternalData_Add_Test(
3115                  <target>   # Name of data management target
3116                  ...        # Arguments of add_test(), DATA{} allowed
3117                  )
3118
3119              It  passes  its  arguments through ExternalData_Expand_Arguments
3120              and then invokes add_test() using the results.
3121
3122
3123              The 'ExternalData_Add_Target' function creates a  custom  target
3124              to manage local instances of data files stored externally:
3125
3126
3127                ExternalData_Add_Target(
3128                  <target>   # Name of data management target
3129                  )
3130
3131              It  creates  custom  commands in the target as necessary to make
3132              data files available for each DATA{} reference previously evalu‐
3133              ated  by other functions provided by this module.  A list of URL
3134              templates must be provided in the variable ExternalData_URL_TEM‐
3135              PLATES  using  the  placeholders "%(algo)" and "%(hash)" in each
3136              template.  Data fetch rules try each URL template  in  order  by
3137              substituting  the hash algorithm name for "%(algo)" and the hash
3138              value for "%(hash)".
3139
3140
3141              The following hash algorithms are supported:
3142
3143
3144                  %(algo)     <ext>     Description
3145                  -------     -----     -----------
3146                  MD5         .md5      Message-Digest Algorithm 5, RFC 1321
3147                  SHA1        .sha1     US Secure Hash Algorithm 1, RFC 3174
3148                  SHA224      .sha224   US Secure Hash Algorithms, RFC 4634
3149                  SHA256      .sha256   US Secure Hash Algorithms, RFC 4634
3150                  SHA384      .sha384   US Secure Hash Algorithms, RFC 4634
3151                  SHA512      .sha512   US Secure Hash Algorithms, RFC 4634
3152
3153              Note that the hashes are used only for unique  data  identifica‐
3154              tion and download verification.  This is not security software.
3155
3156
3157              Example usage:
3158
3159
3160                 include(ExternalData)
3161                 set(ExternalData_URL_TEMPLATES "file:///local/%(algo)/%(hash)"
3162                                                "http://data.org/%(algo)/%(hash)")
3163                 ExternalData_Add_Test(MyData
3164                   NAME MyTest
3165                   COMMAND MyExe DATA{MyInput.png}
3166                   )
3167                 ExternalData_Add_Target(MyData)
3168
3169              When test "MyTest" runs the "DATA{MyInput.png}" argument will be
3170              replaced by the full path to a real instance of  the  data  file
3171              "MyInput.png"  on  disk.   If the source tree contains a content
3172              link such as "MyInput.png.md5" then the "MyData" target  creates
3173              a real "MyInput.png" in the build tree.
3174
3175
3176              The  DATA{}  syntax can be told to fetch a file series using the
3177              form "DATA{<name>,:}", where the ":" is literal.  If the  source
3178              tree  contains  a  group  of files or content links named like a
3179              series then a reference to one member adds rules to fetch all of
3180              them.   Although  all  members of a series are fetched, only the
3181              file originally named by the DATA{} argument is substituted  for
3182              it.  The default configuration recognizes file series names end‐
3183              ing with "#.ext", "_#.ext", ".#.ext", or "-#.ext" where "#" is a
3184              sequence  of  decimal digits and ".ext" is any single extension.
3185              Configure it with a regex  that  parses  <number>  and  <suffix>
3186              parts from the end of <name>:
3187
3188
3189                ExternalData_SERIES_PARSE = regex of the form (<number>)(<suffix>)$
3190
3191              For more complicated cases set:
3192
3193
3194                ExternalData_SERIES_PARSE = regex with at least two () groups
3195                ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any
3196                ExternalData_SERIES_PARSE_NUMBER = <number> regex group number
3197                ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number
3198
3199              Configure  series  number matching with a regex that matches the
3200              <number> part of series members named <prefix><number><suffix>:
3201
3202
3203                ExternalData_SERIES_MATCH = regex matching <number> in all series members
3204
3205              Note that the <suffix> of a series does not include a hash-algo‐
3206              rithm extension.
3207
3208
3209              The  DATA{} syntax can alternatively match files associated with
3210              the named file and contained in the same directory.   Associated
3211              files   may   be   specified   by   options   using  the  syntax
3212              DATA{<name>,<opt1>,<opt2>,...}.  Each  option  may  specify  one
3213              file by name or specify a regular expression to match file names
3214              using the syntax REGEX:<regex>.  For example, the arguments
3215
3216
3217                 DATA{MyData/MyInput.mhd,MyInput.img}                   # File pair
3218                 DATA{MyData/MyFrames00.png,REGEX:MyFrames[0-9]+\\.png} # Series
3219
3220              will pass MyInput.mha and MyFrames00.png on the command line but
3221              ensure that the associated files are present next to them.
3222
3223
3224              The  DATA{}  syntax  may  reference a directory using a trailing
3225              slash   and   a   list   of   associated   files.    The    form
3226              DATA{<name>/,<opt1>,<opt2>,...} adds rules to fetch any files in
3227              the directory that match one of  the  associated  file  options.
3228              For  example,  the  argument DATA{MyDataDir/,REGEX:.*} will pass
3229              the full path to a MyDataDir directory on the command  line  and
3230              ensure  that the directory contains files corresponding to every
3231              file or content link in the MyDataDir source directory.
3232
3233
3234              The variable ExternalData_LINK_CONTENT may be set to the name of
3235              a  supported  hash  algorithm  to enable automatic conversion of
3236              real data files referenced by the  DATA{}  syntax  into  content
3237              links.   For each such <file> a content link named "<file><ext>"
3238              is created.  The original file is renamed to the  form  ".Exter‐
3239              nalData_<algo>_<hash>"  to  stage  it for future transmission to
3240              one of the locations in the list of URL templates (by means out‐
3241              side the scope of this module).  The data fetch rule created for
3242              the content link will use the staged  object  if  it  cannot  be
3243              found using any URL template.
3244
3245
3246              The  variable ExternalData_OBJECT_STORES may be set to a list of
3247              local  directories  that  store   objects   using   the   layout
3248              <dir>/%(algo)/%(hash).  These directories will be searched first
3249              for a needed object.  If the object  is  not  available  in  any
3250              store  then  it will be fetched remotely using the URL templates
3251              and added to the first local store listed.   If  no  stores  are
3252              specified the default is a location inside the build tree.
3253
3254
3255              The  variable ExternalData_SOURCE_ROOT may be set to the highest
3256              source directory containing any path named by  a  DATA{}  refer‐
3257              ence.     The    default    is    CMAKE_SOURCE_DIR.    External‐
3258              Data_SOURCE_ROOT and CMAKE_SOURCE_DIR must refer to  directories
3259              within  a single source distribution (e.g. they come together in
3260              one tarball).
3261
3262
3263              The variable ExternalData_BINARY_ROOT may be set to  the  direc‐
3264              tory to hold the real data files named by expanded DATA{} refer‐
3265              ences.  The default is CMAKE_BINARY_DIR.  The  directory  layout
3266              will    mirror   that   of   content   links   under   External‐
3267              Data_SOURCE_ROOT.
3268
3269
3270              Variables ExternalData_TIMEOUT_INACTIVITY and ExternalData_TIME‐
3271              OUT_ABSOLUTE  set the download inactivity and absolute timeouts,
3272              in seconds.  The  defaults  are  60  seconds  and  300  seconds,
3273              respectively.   Set  either  timeout  to  0  seconds  to disable
3274              enforcement.
3275
3276
3277       ExternalProject
3278              Create custom targets to build projects in external trees
3279
3280              The 'ExternalProject_Add' function creates a  custom  target  to
3281              drive download, update/patch, configure, build, install and test
3282              steps of an external project:
3283
3284
3285                ExternalProject_Add(<name>    # Name for custom target
3286                  [DEPENDS projects...]       # Targets on which the project depends
3287                  [PREFIX dir]                # Root dir for entire project
3288                  [LIST_SEPARATOR sep]        # Sep to be replaced by ; in cmd lines
3289                  [TMP_DIR dir]               # Directory to store temporary files
3290                  [STAMP_DIR dir]             # Directory to store step timestamps
3291                 #--Download step--------------
3292                  [DOWNLOAD_NAME fname]       # File name to store (if not end of URL)
3293                  [DOWNLOAD_DIR dir]          # Directory to store downloaded files
3294                  [DOWNLOAD_COMMAND cmd...]   # Command to download source tree
3295                  [CVS_REPOSITORY cvsroot]    # CVSROOT of CVS repository
3296                  [CVS_MODULE mod]            # Module to checkout from CVS repo
3297                  [CVS_TAG tag]               # Tag to checkout from CVS repo
3298                  [SVN_REPOSITORY url]        # URL of Subversion repo
3299                  [SVN_REVISION rev]          # Revision to checkout from Subversion repo
3300                  [SVN_USERNAME john ]        # Username for Subversion checkout and update
3301                  [SVN_PASSWORD doe ]         # Password for Subversion checkout and update
3302                  [SVN_TRUST_CERT 1 ]         # Trust the Subversion server site certificate
3303                  [GIT_REPOSITORY url]        # URL of git repo
3304                  [GIT_TAG tag]               # Git branch name, commit id or tag
3305                  [HG_REPOSITORY url]         # URL of mercurial repo
3306                  [HG_TAG tag]                # Mercurial branch name, commit id or tag
3307                  [URL /.../src.tgz]          # Full path or URL of source
3308                  [URL_HASH ALGO=value]       # Hash of file at URL
3309                  [URL_MD5 md5]               # Equivalent to URL_HASH MD5=md5
3310                  [TLS_VERIFY bool]           # Should certificate for https be checked
3311                  [TLS_CAINFO file]           # Path to a certificate authority file
3312                  [TIMEOUT seconds]           # Time allowed for file download operations
3313                 #--Update/Patch step----------
3314                  [UPDATE_COMMAND cmd...]     # Source work-tree update command
3315                  [PATCH_COMMAND cmd...]      # Command to patch downloaded source
3316                 #--Configure step-------------
3317                  [SOURCE_DIR dir]            # Source dir to be used for build
3318                  [CONFIGURE_COMMAND cmd...]  # Build tree configuration command
3319                  [CMAKE_COMMAND /.../cmake]  # Specify alternative cmake executable
3320                  [CMAKE_GENERATOR gen]       # Specify generator for native build
3321                  [CMAKE_GENERATOR_TOOLSET t] # Generator-specific toolset name
3322                  [CMAKE_ARGS args...]        # Arguments to CMake command line
3323                  [CMAKE_CACHE_ARGS args...]  # Initial cache arguments, of the form -Dvar:string=on
3324                 #--Build step-----------------
3325                  [BINARY_DIR dir]            # Specify build dir location
3326                  [BUILD_COMMAND cmd...]      # Command to drive the native build
3327                  [BUILD_IN_SOURCE 1]         # Use source dir for build dir
3328                 #--Install step---------------
3329                  [INSTALL_DIR dir]           # Installation prefix
3330                  [INSTALL_COMMAND cmd...]    # Command to drive install after build
3331                 #--Test step------------------
3332                  [TEST_BEFORE_INSTALL 1]     # Add test step executed before install step
3333                  [TEST_AFTER_INSTALL 1]      # Add test step executed after install step
3334                  [TEST_COMMAND cmd...]       # Command to drive test
3335                 #--Output logging-------------
3336                  [LOG_DOWNLOAD 1]            # Wrap download in script to log output
3337                  [LOG_UPDATE 1]              # Wrap update in script to log output
3338                  [LOG_CONFIGURE 1]           # Wrap configure in script to log output
3339                  [LOG_BUILD 1]               # Wrap build in script to log output
3340                  [LOG_TEST 1]                # Wrap test in script to log output
3341                  [LOG_INSTALL 1]             # Wrap install in script to log output
3342                 #--Custom targets-------------
3343                  [STEP_TARGETS st1 st2 ...]  # Generate custom targets for these steps
3344                  )
3345
3346              The *_DIR options specify  directories  for  the  project,  with
3347              default directories computed as follows. If the PREFIX option is
3348              given to ExternalProject_Add() or the EP_PREFIX directory  prop‐
3349              erty  is  set,  then  an external project is built and installed
3350              under the specified prefix:
3351
3352
3353                 TMP_DIR      = <prefix>/tmp
3354                 STAMP_DIR    = <prefix>/src/<name>-stamp
3355                 DOWNLOAD_DIR = <prefix>/src
3356                 SOURCE_DIR   = <prefix>/src/<name>
3357                 BINARY_DIR   = <prefix>/src/<name>-build
3358                 INSTALL_DIR  = <prefix>
3359
3360              Otherwise, if the EP_BASE directory property is set then  compo‐
3361              nents  of  an  external  project  are stored under the specified
3362              base:
3363
3364
3365                 TMP_DIR      = <base>/tmp/<name>
3366                 STAMP_DIR    = <base>/Stamp/<name>
3367                 DOWNLOAD_DIR = <base>/Download/<name>
3368                 SOURCE_DIR   = <base>/Source/<name>
3369                 BINARY_DIR   = <base>/Build/<name>
3370                 INSTALL_DIR  = <base>/Install/<name>
3371
3372              If no PREFIX,  EP_PREFIX,  or  EP_BASE  is  specified  then  the
3373              default  is to set PREFIX to "<name>-prefix". Relative paths are
3374              interpreted with respect to the build directory corresponding to
3375              the source directory in which ExternalProject_Add is invoked.
3376
3377
3378              If  SOURCE_DIR  is  explicitly  set to an existing directory the
3379              project will be built from it. Otherwise a download step must be
3380              specified  using  one  of the DOWNLOAD_COMMAND, CVS_*, SVN_*, or
3381              URL options. The URL option may refer locally to a directory  or
3382              source   tarball,   or   refer   to   a   remote  tarball  (e.g.
3383              http://.../src.tgz).
3384
3385
3386              The 'ExternalProject_Add_Step' function adds a custom step to an
3387              external project:
3388
3389
3390                ExternalProject_Add_Step(<name> <step> # Names of project and custom step
3391                  [COMMAND cmd...]        # Command line invoked by this step
3392                  [COMMENT "text..."]     # Text printed when step executes
3393                  [DEPENDEES steps...]    # Steps on which this step depends
3394                  [DEPENDERS steps...]    # Steps that depend on this step
3395                  [DEPENDS files...]      # Files on which this step depends
3396                  [ALWAYS 1]              # No stamp file, step always runs
3397                  [WORKING_DIRECTORY dir] # Working directory for command
3398                  [LOG 1]                 # Wrap step in script to log output
3399                  )
3400
3401              The  command line, comment, and working directory of every stan‐
3402              dard  and  custom  step   is   processed   to   replace   tokens
3403              <SOURCE_DIR>,  <BINARY_DIR>,  <INSTALL_DIR>,  and <TMP_DIR> with
3404              corresponding property values.
3405
3406
3407              Any builtin step that specifies  a  "<step>_COMMAND  cmd..."  or
3408              custom  step that specifies a "COMMAND cmd..." may specify addi‐
3409              tional command lines using the form "COMMAND cmd...".  At  build
3410              time  the  commands will be executed in order and aborted if any
3411              one fails.  For example:
3412
3413
3414                ... BUILD_COMMAND make COMMAND echo done ...
3415
3416              specifies to run "make" and then "echo done"  during  the  build
3417              step. Whether the current working directory is preserved between
3418              commands is not defined.  Behavior of shell operators like  "&&"
3419              is not defined.
3420
3421
3422              The  'ExternalProject_Get_Property'  function retrieves external
3423              project target properties:
3424
3425
3426                ExternalProject_Get_Property(<name> [prop1 [prop2 [...]]])
3427
3428              It stores property values in variables of the same  name.  Prop‐
3429              erty  names  correspond to the keyword argument names of 'Exter‐
3430              nalProject_Add'.
3431
3432
3433              The 'ExternalProject_Add_StepTargets' function generates  custom
3434              targets for the steps listed:
3435
3436
3437                ExternalProject_Add_StepTargets(<name> [step1 [step2 [...]]])
3438
3439
3440
3441
3442              If  STEP_TARGETS  is set then ExternalProject_Add_StepTargets is
3443              automatically called at the end of matching calls  to  External‐
3444              Project_Add_Step.  Pass  STEP_TARGETS  explicitly  to individual
3445              ExternalProject_Add calls, or  implicitly  to  all  ExternalPro‐
3446              ject_Add  calls  by  setting the directory property EP_STEP_TAR‐
3447              GETS.
3448
3449
3450              If STEP_TARGETS is not set,  clients  may  still  manually  call
3451              ExternalProject_Add_StepTargets   after   calling   ExternalPro‐
3452              ject_Add or ExternalProject_Add_Step.
3453
3454
3455              This functionality is provided to make  it  easy  to  drive  the
3456              steps independently of each other by specifying targets on build
3457              command  lines.  For  example,  you  may  be  submitting  to   a
3458              sub-project based dashboard, where you want to drive the config‐
3459              ure portion of the build, then submit to the dashboard, followed
3460              by  the build portion, followed by tests. If you invoke a custom
3461              target that depends on a step halfway through  the  step  depen‐
3462              dency chain, then all the previous steps will also run to ensure
3463              everything is up to date.
3464
3465
3466              For example, to drive configure, build and test  steps  indepen‐
3467              dently  for each ExternalProject_Add call in your project, write
3468              the following line prior to  any  ExternalProject_Add  calls  in
3469              your CMakeLists file:
3470
3471
3472                 set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)
3473
3474
3475       FeatureSummary
3476              Macros for generating a summary of enabled/disabled features
3477
3478
3479
3480
3481              This  module  provides  the  macros feature_summary(), set_pack‐
3482              age_properties() and add_feature_info().  For  compatibility  it
3483              also   still  provides  set_package_info(),  set_feature_info(),
3484              print_enabled_features() and print_disabled_features().
3485
3486
3487              These macros can be used to generate a summary  of  enabled  and
3488              disabled packages and/or feature for a build tree:
3489
3490
3491                  -- The following OPTIONAL packages have been found:
3492                  LibXml2 (required version >= 2.4) , XML processing library. , <http://xmlsoft.org>
3493                     * Enables HTML-import in MyWordProcessor
3494                     * Enables odt-export in MyWordProcessor
3495                  PNG , A PNG image library. , <http://www.libpng.org/pub/png/>
3496                     * Enables saving screenshots
3497                  -- The following OPTIONAL packages have not been found:
3498                  Lua51 , The Lua scripting language. , <http://www.lua.org>
3499                     * Enables macros in MyWordProcessor
3500                  Foo , Foo provides cool stuff.
3501
3502
3503
3504
3505
3506
3507
3508                  FEATURE_SUMMARY( [FILENAME <file>]
3509                                   [APPEND]
3510                                   [VAR <variable_name>]
3511                                   [INCLUDE_QUIET_PACKAGES]
3512                                   [FATAL_ON_MISSING_REQUIRED_PACKAGES]
3513                                   [DESCRIPTION "Found packages:"]
3514                                   WHAT (ALL | PACKAGES_FOUND | PACKAGES_NOT_FOUND
3515                                        | ENABLED_FEATURES | DISABLED_FEATURES]
3516                                 )
3517
3518
3519
3520
3521              The  FEATURE_SUMMARY()  macro  can  be used to print information
3522              about enabled or disabled packages or features of a project.  By
3523              default, only the names of the features/packages will be printed
3524              and their required version when one was specified. Use SET_PACK‐
3525              AGE_PROPERTIES()  to  add  more  useful information, like e.g. a
3526              download URL for the respective package or their purpose in  the
3527              project.
3528
3529
3530              The  WHAT  option is the only mandatory option. Here you specify
3531              what information will be printed:
3532
3533
3534                  ALL: print everything
3535                  ENABLED_FEATURES: the list of all features which are enabled
3536                  DISABLED_FEATURES: the list of all features which are disabled
3537                  PACKAGES_FOUND: the list of all packages which have been found
3538                  PACKAGES_NOT_FOUND: the list of all packages which have not been found
3539                  OPTIONAL_PACKAGES_FOUND: only those packages which have been found which have the type OPTIONAL
3540                  OPTIONAL_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type OPTIONAL
3541                  RECOMMENDED_PACKAGES_FOUND: only those packages which have been found which have the type RECOMMENDED
3542                  RECOMMENDED_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type RECOMMENDED
3543                  REQUIRED_PACKAGES_FOUND: only those packages which have been found which have the type REQUIRED
3544                  REQUIRED_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type REQUIRED
3545                  RUNTIME_PACKAGES_FOUND: only those packages which have been found which have the type RUNTIME
3546                  RUNTIME_PACKAGES_NOT_FOUND: only those packages which have not been found which have the type RUNTIME
3547
3548
3549
3550
3551              If a FILENAME is given, the information  is  printed  into  this
3552              file.  If APPEND is used, it is appended to this file, otherwise
3553              the file is overwritten if it already existed. If the VAR option
3554              is  used,  the information is "printed" into the specified vari‐
3555              able. If FILENAME is not used, the information is printed to the
3556              terminal. Using the DESCRIPTION option a description or headline
3557              can be set which will be printed above the  actual  content.  If
3558              INCLUDE_QUIET_PACKAGES   is  given,  packages  which  have  been
3559              searched with find_package(... QUIET) will also  be  listed.  By
3560              default  they are skipped. If FATAL_ON_MISSING_REQUIRED_PACKAGES
3561              is given, CMake will abort if  a  package  which  is  marked  as
3562              REQUIRED has not been found.
3563
3564
3565              Example 1, append everything to a file:
3566
3567
3568                 feature_summary(WHAT ALL
3569                                 FILENAME ${CMAKE_BINARY_DIR}/all.log APPEND)
3570
3571
3572
3573
3574              Example 2, print the enabled features into the variable enabled‐
3575              FeaturesText, including QUIET packages:
3576
3577
3578                 feature_summary(WHAT ENABLED_FEATURES
3579                                 INCLUDE_QUIET_PACKAGES
3580                                 DESCRIPTION "Enabled Features:"
3581                                 VAR enabledFeaturesText)
3582                 message(STATUS "${enabledFeaturesText}")
3583
3584
3585
3586
3587
3588
3589
3590                  SET_PACKAGE_PROPERTIES(<name> PROPERTIES [ URL <url> ]
3591                                                           [ DESCRIPTION <description> ]
3592                                                           [ TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) ]
3593                                                           [ PURPOSE <purpose> ]
3594                                        )
3595
3596
3597
3598
3599              Use this macro to set up information about  the  named  package,
3600              which  can  then be displayed via FEATURE_SUMMARY(). This can be
3601              done either directly in the Find-module or in the project  which
3602              uses  the module after the find_package() call. The features for
3603              which information can be set  are  added  automatically  by  the
3604              find_package() command.
3605
3606
3607              URL:  this  should  be the homepage of the package, or something
3608              similar. Ideally this is set already directly in  the  Find-mod‐
3609              ule.
3610
3611
3612              DESCRIPTION:  A  short description what that package is, at most
3613              one sentence. Ideally  this  is  set  already  directly  in  the
3614              Find-module.
3615
3616
3617              TYPE:  What  type  of  dependency  has the using project on that
3618              package. Default is OPTIONAL. In this case it is a package which
3619              can  be  used by the project when available at buildtime, but it
3620              also work without. RECOMMENDED is similar to OPTIONAL, i.e.  the
3621              project  will build if the package is not present, but the func‐
3622              tionality of the resulting binaries will be severly limited.  If
3623              a  REQUIRED  package  is not available at buildtime, the project
3624              may not even build. This can be combined with the FATAL_ON_MISS‐
3625              ING_REQUIRED_PACKAGES  argument  for  feature_summary(). Last, a
3626              RUNTIME package is a package which is actually not used  at  all
3627              during the build, but which is required for actually running the
3628              resulting binaries. So if such a package is missing, the project
3629              can  still  be built, but it may not work later on. If set_pack‐
3630              age_properties() is called multiple times for the  same  package
3631              with different TYPEs, the TYPE is only changed to higher TYPEs (
3632              RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED ), lower  TYPEs  are
3633              ignored.  The TYPE property is project-specific, so it cannot be
3634              set by the Find-module, but must be set in the project.
3635
3636
3637              PURPOSE: This describes which features this package  enables  in
3638              the  project,  i.e. it tells the user what functionality he gets
3639              in the resulting binaries. If set_package_properties() is called
3640              multiple  times  for  a  package,  all  PURPOSE  properties  are
3641              appended to a list of purposes of the package in the project. As
3642              the  TYPE  property,  also  the PURPOSE property is project-spe‐
3643              cific, so it cannot be set by the Find-module, but must  be  set
3644              in the project.
3645
3646
3647
3648
3649
3650              Example for setting the info for a package:
3651
3652
3653                 find_package(LibXml2)
3654                 set_package_properties(LibXml2 PROPERTIES DESCRIPTION "A XML processing library."
3655                                                           URL "http://xmlsoft.org/")
3656
3657
3658
3659
3660                 set_package_properties(LibXml2 PROPERTIES TYPE RECOMMENDED
3661                                                           PURPOSE "Enables HTML-import in MyWordProcessor")
3662                 ...
3663                 set_package_properties(LibXml2 PROPERTIES TYPE OPTIONAL
3664                                                           PURPOSE "Enables odt-export in MyWordProcessor")
3665
3666
3667
3668
3669                 find_package(DBUS)
3670                 set_package_properties(DBUS PROPERTIES TYPE RUNTIME
3671                                                           PURPOSE "Necessary to disable the screensaver during a presentation" )
3672
3673
3674
3675
3676                  ADD_FEATURE_INFO(<name> <enabled> <description>)
3677
3678              Use this macro to add information about a feature with the given
3679              <name>. <enabled> contains whether this feature  is  enabled  or
3680              not,  <description> is a text describing the feature. The infor‐
3681              mation can be displayed using feature_summary() for ENABLED_FEA‐
3682              TURES and DISABLED_FEATURES respectively.
3683
3684
3685              Example for setting the info for a feature:
3686
3687
3688                 option(WITH_FOO "Help for foo" ON)
3689                 add_feature_info(Foo WITH_FOO "The Foo feature provides very cool stuff.")
3690
3691
3692
3693
3694
3695
3696
3697              The  following macros are provided for compatibility with previ‐
3698              ous CMake versions:
3699
3700
3701                  SET_PACKAGE_INFO(<name> <description> [<url> [<purpose>] ] )
3702
3703              Use this macro to set up information about  the  named  package,
3704              which  can  then be displayed via FEATURE_SUMMARY(). This can be
3705              done either directly in the Find-module or in the project  which
3706              uses  the module after the find_package() call. The features for
3707              which information can be set  are  added  automatically  by  the
3708              find_package() command.
3709
3710
3711                  PRINT_ENABLED_FEATURES()
3712
3713              Does the same as FEATURE_SUMMARY(WHAT ENABLED_FEATURES  DESCRIP‐
3714              TION "Enabled features:")
3715
3716
3717                  PRINT_DISABLED_FEATURES()
3718
3719              Does  the   same   as   FEATURE_SUMMARY(WHAT   DISABLED_FEATURES
3720              DESCRIPTION "Disabled features:")
3721
3722
3723                  SET_FEATURE_INFO(<name> <description> [<url>] )
3724
3725              Does the same as SET_PACKAGE_INFO(<name> <description> <url> )
3726
3727
3728       FindALSA
3729              Find alsa
3730
3731              Find the alsa libraries (asound)
3732
3733
3734                This module defines the following variables:
3735                   ALSA_FOUND       - True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
3736                   ALSA_LIBRARIES   - Set when ALSA_LIBRARY is found
3737                   ALSA_INCLUDE_DIRS - Set when ALSA_INCLUDE_DIR is found
3738
3739
3740
3741
3742                   ALSA_INCLUDE_DIR - where to find asoundlib.h, etc.
3743                   ALSA_LIBRARY     - the asound library
3744                   ALSA_VERSION_STRING - the version of alsa found (since CMake 2.8.8)
3745
3746
3747
3748
3749
3750       FindASPELL
3751              Try to find ASPELL
3752
3753              Once done this will define
3754
3755
3756                ASPELL_FOUND - system has ASPELL
3757                ASPELL_EXECUTABLE - the ASPELL executable
3758                ASPELL_INCLUDE_DIR - the ASPELL include directory
3759                ASPELL_LIBRARIES - The libraries needed to use ASPELL
3760                ASPELL_DEFINITIONS - Compiler switches required for using ASPELL
3761
3762
3763       FindAVIFile
3764              Locate AVIFILE library and include paths
3765
3766              AVIFILE  (http://avifile.sourceforge.net/)is  a set of libraries
3767              for i386 machines to use various AVI codecs. Support is  limited
3768              beyond  Linux.  Windows  provides  native  AVI  support,  and so
3769              doesn't need this library. This module defines
3770
3771
3772                AVIFILE_INCLUDE_DIR, where to find avifile.h , etc.
3773                AVIFILE_LIBRARIES, the libraries to link against
3774                AVIFILE_DEFINITIONS, definitions to use when compiling
3775                AVIFILE_FOUND, If false, don't try to use AVIFILE
3776
3777
3778       FindArmadillo
3779              Find Armadillo
3780
3781              Find the Armadillo C++ library
3782
3783
3784              Using Armadillo:
3785
3786
3787                find_package(Armadillo REQUIRED)
3788                include_directories(${ARMADILLO_INCLUDE_DIRS})
3789                add_executable(foo foo.cc)
3790                target_link_libraries(foo ${ARMADILLO_LIBRARIES})
3791
3792              This module sets the following variables:
3793
3794
3795                ARMADILLO_FOUND - set to true if the library is found
3796                ARMADILLO_INCLUDE_DIRS - list of required include directories
3797                ARMADILLO_LIBRARIES - list of libraries to be linked
3798                ARMADILLO_VERSION_MAJOR - major version number
3799                ARMADILLO_VERSION_MINOR - minor version number
3800                ARMADILLO_VERSION_PATCH - patch version number
3801                ARMADILLO_VERSION_STRING - version number as a string (ex: "1.0.4")
3802                ARMADILLO_VERSION_NAME - name of the version (ex: "Antipodean Antileech")
3803
3804
3805       FindBISON
3806              Find bison executable and provides  macros  to  generate  custom
3807              build rules
3808
3809              The module defines the following variables:
3810
3811
3812                BISON_EXECUTABLE - path to the bison program
3813                BISON_VERSION - version of bison
3814                BISON_FOUND - true if the program was found
3815
3816
3817
3818
3819              The minimum required version of bison can be specified using the
3820              standard CMake syntax, e.g. find_package(BISON 2.1.3)
3821
3822
3823              If bison is found, the module defines the macros:
3824
3825
3826                BISON_TARGET(<Name> <YaccInput> <CodeOutput> [VERBOSE <file>]
3827                            [COMPILE_FLAGS <string>])
3828
3829              which will create  a custom rule to generate  a parser. <YaccIn‐
3830              put>  is  the path to  a yacc file. <CodeOutput> is the name  of
3831              the source file generated by bison.  A header file is  also   be
3832              generated,  and  contains  the   token  list.  If  COMPILE_FLAGS
3833              option is  specified,  the  next  parameter  is   added  in  the
3834              bison  command line.  if  VERBOSE option is specified, <file> is
3835              created  and contains verbose descriptions of  the  grammar  and
3836              parser. The macro defines a set of variables:
3837
3838
3839                BISON_${Name}_DEFINED - true is the macro ran successfully
3840                BISON_${Name}_INPUT - The input source file, an alias for <YaccInput>
3841                BISON_${Name}_OUTPUT_SOURCE - The source file generated by bison
3842                BISON_${Name}_OUTPUT_HEADER - The header file generated by bison
3843                BISON_${Name}_OUTPUTS - The sources files generated by bison
3844                BISON_${Name}_COMPILE_FLAGS - Options used in the bison command line
3845
3846
3847
3848
3849                ====================================================================
3850                Example:
3851
3852
3853
3854
3855                 find_package(BISON)
3856                 BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
3857                 add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})
3858                ====================================================================
3859
3860
3861       FindBLAS
3862              Find BLAS library
3863
3864              This  module  finds an installed fortran library that implements
3865              the       BLAS       linear-algebra        interface        (see
3866              http://www.netlib.org/blas/). The list of libraries searched for
3867              is taken from the autoconf macro file, acx_blas.m4  (distributed
3868              at http://ac-archive.sourceforge.net/ac-archive/acx_blas.html).
3869
3870
3871              This module sets the following variables:
3872
3873
3874                BLAS_FOUND - set to true if a library implementing the BLAS interface
3875                  is found
3876                BLAS_LINKER_FLAGS - uncached list of required linker flags (excluding -l
3877                  and -L).
3878                BLAS_LIBRARIES - uncached list of libraries (using full path name) to
3879                  link against to use BLAS
3880                BLAS95_LIBRARIES - uncached list of libraries (using full path name)
3881                  to link against to use BLAS95 interface
3882                BLAS95_FOUND - set to true if a library implementing the BLAS f95 interface
3883                  is found
3884                BLA_STATIC  if set on this determines what kind of linkage we do (static)
3885                BLA_VENDOR  if set checks only the specified vendor, if not set checks
3886                   all the possibilities
3887                BLA_F95     if set on tries to find the f95 interfaces for BLAS/LAPACK
3888
3889              C/CXX should be enabled to use Intel mkl
3890
3891
3892       FindBZip2
3893              Try to find BZip2
3894
3895              Once done this will define
3896
3897
3898                BZIP2_FOUND - system has BZip2
3899                BZIP2_INCLUDE_DIR - the BZip2 include directory
3900                BZIP2_LIBRARIES - Link these to use BZip2
3901                BZIP2_NEED_PREFIX - this is set if the functions are prefixed with BZ2_
3902                BZIP2_VERSION_STRING - the version of BZip2 found (since CMake 2.8.8)
3903
3904
3905       FindBoost
3906              Find Boost include dirs and libraries
3907
3908              Use this module by invoking find_package with the form:
3909
3910
3911                find_package(Boost
3912                  [version] [EXACT]      # Minimum or EXACT version e.g. 1.36.0
3913                  [REQUIRED]             # Fail with error if Boost is not found
3914                  [COMPONENTS <libs>...] # Boost libraries by their canonical name
3915                  )                      # e.g. "date_time" for "libboost_date_time"
3916
3917              This module finds headers and requested component libraries OR a
3918              CMake package configuration file provided  by  a  "Boost  CMake"
3919              build.   For  the  latter case skip to the "Boost CMake" section
3920              below.  For the former case results are reported in variables:
3921
3922
3923                Boost_FOUND            - True if headers and requested libraries were found
3924                Boost_INCLUDE_DIRS     - Boost include directories
3925                Boost_LIBRARY_DIRS     - Link directories for Boost libraries
3926                Boost_LIBRARIES        - Boost component libraries to be linked
3927                Boost_<C>_FOUND        - True if component <C> was found (<C> is upper-case)
3928                Boost_<C>_LIBRARY      - Libraries to link for component <C> (may include
3929                                         target_link_libraries debug/optimized keywords)
3930                Boost_VERSION          - BOOST_VERSION value from boost/version.hpp
3931                Boost_LIB_VERSION      - Version string appended to library filenames
3932                Boost_MAJOR_VERSION    - Boost major version number (X in X.y.z)
3933                Boost_MINOR_VERSION    - Boost minor version number (Y in x.Y.z)
3934                Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z)
3935                Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
3936                                       - Pass to add_definitions() to have diagnostic
3937                                         information about Boost's automatic linking
3938                                         displayed during compilation
3939
3940
3941
3942
3943              This module reads hints about search locations from variables:
3944
3945
3946                BOOST_ROOT             - Preferred installation prefix
3947                 (or BOOSTROOT)
3948                BOOST_INCLUDEDIR       - Preferred include directory e.g. <prefix>/include
3949                BOOST_LIBRARYDIR       - Preferred library directory e.g. <prefix>/lib
3950                Boost_NO_SYSTEM_PATHS  - Set to ON to disable searching in locations not
3951                                         specified by these hint variables. Default is OFF.
3952                Boost_ADDITIONAL_VERSIONS
3953                                       - List of Boost versions not known to this module
3954                                         (Boost install locations may contain the version)
3955
3956              and saves search results persistently in CMake cache entries:
3957
3958
3959                Boost_INCLUDE_DIR         - Directory containing Boost headers
3960                Boost_LIBRARY_DIR         - Directory containing Boost libraries
3961                Boost_<C>_LIBRARY_DEBUG   - Component <C> library debug variant
3962                Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
3963
3964              Users may set these hints or results as cache entries.  Projects
3965              should not read these entries directly but instead use the above
3966              result variables. Note that some hint names start in  upper-case
3967              "BOOST".  One may specify these as environment variables if they
3968              are not specified as CMake variables or cache entries.
3969
3970
3971              This module first searches for the Boost header files using  the
3972              above  hint variables (excluding BOOST_LIBRARYDIR) and saves the
3973              result in Boost_INCLUDE_DIR.  Then  it  searches  for  requested
3974              component   libraries   using   the   above   hints   (excluding
3975              BOOST_INCLUDEDIR and Boost_ADDITIONAL_VERSIONS), "lib"  directo‐
3976              ries  near Boost_INCLUDE_DIR, and the library name configuration
3977              settings   below.    It   saves   the   library   directory   in
3978              Boost_LIBRARY_DIR    and   individual   library   locations   in
3979              Boost_<C>_LIBRARY_DEBUG and Boost_<C>_LIBRARY_RELEASE.  When one
3980              changes  settings  used  by  previous searches in the same build
3981              tree (excluding environment variables) this module discards pre‐
3982              vious search results affected by the changes and searches again.
3983
3984
3985              Boost  libraries  come  in  many  variants encoded in their file
3986              name.  Users or projects may tell this module which  variant  to
3987              find by setting variables:
3988
3989
3990                Boost_USE_MULTITHREADED  - Set to OFF to use the non-multithreaded
3991                                           libraries ('mt' tag).  Default is ON.
3992                Boost_USE_STATIC_LIBS    - Set to ON to force the use of the static
3993                                           libraries.  Default is OFF.
3994                Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use
3995                                           libraries linked statically to the C++ runtime
3996                                           ('s' tag).  Default is platform dependent.
3997                Boost_USE_DEBUG_PYTHON   - Set to ON to use libraries compiled with a
3998                                           debug Python build ('y' tag). Default is OFF.
3999                Boost_USE_STLPORT        - Set to ON to use libraries compiled with
4000                                           STLPort ('p' tag).  Default is OFF.
4001                Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
4002                                         - Set to ON to use libraries compiled with
4003                                           STLPort deprecated "native iostreams"
4004                                           ('n' tag).  Default is OFF.
4005                Boost_COMPILER           - Set to the compiler-specific library suffix
4006                                           (e.g. "-gcc43").  Default is auto-computed
4007                                           for the C++ compiler in use.
4008                Boost_THREADAPI          - Suffix for "thread" component library name,
4009                                           such as "pthread" or "win32".  Names with
4010                                           and without this suffix will both be tried.
4011
4012              Other variables one may set to control this module are:
4013
4014
4015                Boost_DEBUG              - Set to ON to enable debug output from FindBoost.
4016                                           Please enable this before filing any bug report.
4017                Boost_DETAILED_FAILURE_MSG
4018                                         - Set to ON to add detailed information to the
4019                                           failure message even when the REQUIRED option
4020                                           is not given to the find_package call.
4021                Boost_REALPATH           - Set to ON to resolve symlinks for discovered
4022                                           libraries to assist with packaging.  For example,
4023                                           the "system" component library may be resolved to
4024                                           "/usr/lib/libboost_system.so.1.42.0" instead of
4025                                           "/usr/lib/libboost_system.so".  This does not
4026                                           affect linking and should not be enabled unless
4027                                           the user needs this information.
4028
4029              On  Visual  Studio  and  Borland compilers Boost headers request
4030              automatic linking to  corresponding  libraries.   This  requires
4031              matching  libraries  to be linked explicitly or available in the
4032              link   library   search   path.    In    this    case    setting
4033              Boost_USE_STATIC_LIBS  to  OFF  may not achieve dynamic linking.
4034              Boost automatic linking typically requests static libraries with
4035              a few exceptions (such as Boost.Python).  Use
4036
4037
4038                add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
4039
4040              to  ask  Boost  to  report  information  about automatic linking
4041              requests.
4042
4043
4044              Example to find Boost headers only:
4045
4046
4047                find_package(Boost 1.36.0)
4048                if(Boost_FOUND)
4049                  include_directories(${Boost_INCLUDE_DIRS})
4050                  add_executable(foo foo.cc)
4051                endif()
4052
4053              Example to find Boost headers and some libraries:
4054
4055
4056                set(Boost_USE_STATIC_LIBS        ON)
4057                set(Boost_USE_MULTITHREADED      ON)
4058                set(Boost_USE_STATIC_RUNTIME    OFF)
4059                find_package(Boost 1.36.0 COMPONENTS date_time filesystem system ...)
4060                if(Boost_FOUND)
4061                  include_directories(${Boost_INCLUDE_DIRS})
4062                  add_executable(foo foo.cc)
4063                  target_link_libraries(foo ${Boost_LIBRARIES})
4064                endif()
4065
4066
4067
4068
4069              Boost                                                      CMake
4070              ----------------------------------------------------------
4071
4072
4073              If  Boost  was built using the boost-cmake project it provides a
4074              package configuration file for use  with  find_package's  Config
4075              mode.   This  module  looks  for  the package configuration file
4076              called BoostConfig.cmake or boost-config.cmake  and  stores  the
4077              result  in  cache entry "Boost_DIR".  If found, the package con‐
4078              figuration file is loaded and this module returns with  no  fur‐
4079              ther  action.  See documentation of the Boost CMake package con‐
4080              figuration for details on what it provides.
4081
4082
4083              Set  Boost_NO_BOOST_CMAKE  to  ON  to  disable  the  search  for
4084              boost-cmake.
4085
4086
4087       FindBullet
4088              Try to find the Bullet physics engine
4089
4090
4091
4092
4093                This module defines the following variables
4094
4095
4096
4097
4098                BULLET_FOUND - Was bullet found
4099                BULLET_INCLUDE_DIRS - the Bullet include directories
4100                BULLET_LIBRARIES - Link to this, by default it includes
4101                                   all bullet components (Dynamics,
4102                                   Collision, LinearMath, & SoftBody)
4103
4104
4105
4106
4107                This module accepts the following variables
4108
4109
4110
4111
4112                BULLET_ROOT - Can be set to bullet install path or Windows build path
4113
4114
4115
4116
4117
4118       FindCABLE
4119              Find CABLE
4120
4121              This module finds if CABLE is installed and determines where the
4122              include files and libraries are.  This code sets  the  following
4123              variables:
4124
4125
4126                CABLE             the path to the cable executable
4127                CABLE_TCL_LIBRARY the path to the Tcl wrapper library
4128                CABLE_INCLUDE_DIR the path to the include directory
4129
4130
4131
4132
4133              To build Tcl wrappers, you should add shared library and link it
4134              to    ${CABLE_TCL_LIBRARY}.      You     should     also     add
4135              ${CABLE_INCLUDE_DIR} as an include directory.
4136
4137
4138       FindCUDA
4139              Tools  for  building CUDA C files: libraries and build dependen‐
4140              cies.
4141
4142              This script locates the NVIDIA CUDA C tools. It should  work  on
4143              linux, windows, and mac and should be reasonably up to date with
4144              CUDA C releases.
4145
4146
4147              This script makes use of the standard find_package arguments  of
4148              <VERSION>,  REQUIRED  and  QUIET.   CUDA_FOUND will report if an
4149              acceptable version of CUDA was found.
4150
4151
4152              The script will prompt the user to specify CUDA_TOOLKIT_ROOT_DIR
4153              if  the  prefix  cannot be determined by the location of nvcc in
4154              the system path and REQUIRED is specified to find_package().  To
4155              use  a  different installed version of the toolkit set the envi‐
4156              ronment  variable  CUDA_BIN_PATH  before  running  cmake   (e.g.
4157              CUDA_BIN_PATH=/usr/local/cuda1.0    instead   of   the   default
4158              /usr/local/cuda) or set CUDA_TOOLKIT_ROOT_DIR after configuring.
4159              If you change the value of CUDA_TOOLKIT_ROOT_DIR, various compo‐
4160              nents that depend on the path will be relocated.
4161
4162
4163              It might be necessary to set CUDA_TOOLKIT_ROOT_DIR  manually  on
4164              certain platforms, or to use a cuda runtime not installed in the
4165              default location. In newer versions  of  the  toolkit  the  cuda
4166              library  is  included with the graphics driver- be sure that the
4167              driver version matches what is needed by the cuda  runtime  ver‐
4168              sion.
4169
4170
4171              The following variables affect the behavior of the macros in the
4172              script (in alphebetical order).  Note that any  of  these  flags
4173              can be changed multiple times in the same directory before call‐
4174              ing   CUDA_ADD_EXECUTABLE,    CUDA_ADD_LIBRARY,    CUDA_COMPILE,
4175              CUDA_COMPILE_PTX or CUDA_WRAP_SRCS.
4176
4177
4178                CUDA_64_BIT_DEVICE_CODE (Default matches host bit size)
4179                -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code.
4180                   Note that making this different from the host code when generating object
4181                   or C files from CUDA code just won't work, because size_t gets defined by
4182                   nvcc in the generated source.  If you compile to PTX and then load the
4183                   file yourself, you can mix bit sizes between device and host.
4184
4185
4186
4187
4188                CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON)
4189                -- Set to ON if you want the custom build rule to be attached to the source
4190                   file in Visual Studio.  Turn OFF if you add the same cuda file to multiple
4191                   targets.
4192
4193
4194
4195
4196                   This allows the user to build the target from the CUDA file; however, bad
4197                   things can happen if the CUDA source file is added to multiple targets.
4198                   When performing parallel builds it is possible for the custom build
4199                   command to be run more than once and in parallel causing cryptic build
4200                   errors.  VS runs the rules for every source file in the target, and a
4201                   source can have only one rule no matter how many projects it is added to.
4202                   When the rule is run from multiple targets race conditions can occur on
4203                   the generated file.  Eventually everything will get built, but if the user
4204                   is unaware of this behavior, there may be confusion.  It would be nice if
4205                   this script could detect the reuse of source files across multiple targets
4206                   and turn the option off for the user, but no good solution could be found.
4207
4208
4209
4210
4211                CUDA_BUILD_CUBIN (Default OFF)
4212                -- Set to ON to enable and extra compilation pass with the -cubin option in
4213                   Device mode. The output is parsed and register, shared memory usage is
4214                   printed during build.
4215
4216
4217
4218
4219                CUDA_BUILD_EMULATION (Default OFF for device mode)
4220                -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files
4221                   when CUDA_BUILD_EMULATION is TRUE.
4222
4223
4224
4225
4226                CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR)
4227                -- Set to the path you wish to have the generated files placed.  If it is
4228                   blank output files will be placed in CMAKE_CURRENT_BINARY_DIR.
4229                   Intermediate files will always be placed in
4230                   CMAKE_CURRENT_BINARY_DIR/CMakeFiles.
4231
4232
4233
4234
4235                CUDA_HOST_COMPILATION_CPP (Default ON)
4236                -- Set to OFF for C compilation of host code.
4237
4238
4239
4240
4241                CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER, $(VCInstallDir)/bin for VS)
4242                -- Set the host compiler to be used by nvcc.  Ignored if -ccbin or
4243                   --compiler-bindir is already present in the CUDA_NVCC_FLAGS or
4244                   CUDA_NVCC_FLAGS_<CONFIG> variables.  For Visual Studio targets
4245                   $(VCInstallDir)/bin is a special value that expands out to the path when
4246                   the command is run from withing VS.
4247
4248
4249
4250
4251                CUDA_NVCC_FLAGS
4252                CUDA_NVCC_FLAGS_<CONFIG>
4253                -- Additional NVCC command line arguments.  NOTE: multiple arguments must be
4254                   semi-colon delimited (e.g. --compiler-options;-Wall)
4255
4256
4257
4258
4259                CUDA_PROPAGATE_HOST_FLAGS (Default ON)
4260                -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration
4261                   dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the
4262                   host compiler through nvcc's -Xcompiler flag.  This helps make the
4263                   generated host code match the rest of the system better.  Sometimes
4264                   certain flags give nvcc problems, and this will help you turn the flag
4265                   propagation off.  This does not affect the flags supplied directly to nvcc
4266                   via CUDA_NVCC_FLAGS or through the OPTION flags specified through
4267                   CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS.  Flags used for
4268                   shared library compilation are not affected by this flag.
4269
4270
4271
4272
4273                CUDA_SEPARABLE_COMPILATION (Default OFF)
4274                -- If set this will enable separable compilation for all CUDA runtime object
4275                   files.  If used outside of CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY
4276                   (e.g. calling CUDA_WRAP_SRCS directly),
4277                   CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME and
4278                   CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS should be called.
4279
4280
4281
4282
4283                CUDA_VERBOSE_BUILD (Default OFF)
4284                -- Set to ON to see all the commands used when building the CUDA file.  When
4285                   using a Makefile generator the value defaults to VERBOSE (run make
4286                   VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will
4287                   always print the output.
4288
4289
4290
4291
4292              The script creates the following macros (in alphebetical order):
4293
4294
4295                CUDA_ADD_CUFFT_TO_TARGET( cuda_target )
4296                -- Adds the cufft library to the target (can be any target).  Handles whether
4297                   you are in emulation mode or not.
4298
4299
4300
4301
4302                CUDA_ADD_CUBLAS_TO_TARGET( cuda_target )
4303                -- Adds the cublas library to the target (can be any target).  Handles
4304                   whether you are in emulation mode or not.
4305
4306
4307
4308
4309                CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ...
4310                                     [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
4311                -- Creates an executable "cuda_target" which is made up of the files
4312                   specified.  All of the non CUDA C files are compiled using the standard
4313                   build rules specified by CMAKE and the cuda files are compiled to object
4314                   files using nvcc and the host compiler.  In addition CUDA_INCLUDE_DIRS is
4315                   added automatically to include_directories().  Some standard CMake target
4316                   calls can be used on the target after calling this macro
4317                   (e.g. set_target_properties and target_link_libraries), but setting
4318                   properties that adjust compilation flags will not affect code compiled by
4319                   nvcc.  Such flags should be modified before calling CUDA_ADD_EXECUTABLE,
4320                   CUDA_ADD_LIBRARY or CUDA_WRAP_SRCS.
4321
4322
4323
4324
4325                CUDA_ADD_LIBRARY( cuda_target file0 file1 ...
4326                                  [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
4327                -- Same as CUDA_ADD_EXECUTABLE except that a library is created.
4328
4329
4330
4331
4332                CUDA_BUILD_CLEAN_TARGET()
4333                -- Creates a convience target that deletes all the dependency files
4334                   generated.  You should make clean after running this target to ensure the
4335                   dependency files get regenerated.
4336
4337
4338
4339
4340                CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE]
4341                              [OPTIONS ...] )
4342                -- Returns a list of generated files from the input source files to be used
4343                   with ADD_LIBRARY or ADD_EXECUTABLE.
4344
4345
4346
4347
4348                CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] )
4349                -- Returns a list of PTX files generated from the input source files.
4350
4351
4352
4353
4354                CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME( output_file_var
4355                                                                     cuda_target
4356                                                                     object_files )
4357                -- Compute the name of the intermediate link file used for separable
4358                   compilation.  This file name is typically passed into
4359                   CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS.  output_file_var is produced
4360                   based on cuda_target the list of objects files that need separable
4361                   compilation as specified by object_files.  If the object_files list is
4362                   empty, then output_file_var will be empty.  This function is called
4363                   automatically for CUDA_ADD_LIBRARY and CUDA_ADD_EXECUTABLE.  Note that
4364                   this is a function and not a macro.
4365
4366
4367
4368
4369                CUDA_INCLUDE_DIRECTORIES( path0 path1 ... )
4370                -- Sets the directories that should be passed to nvcc
4371                   (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu
4372                   files.
4373
4374
4375
4376
4377
4378
4379
4380                CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS( output_file_var cuda_target
4381                                                         nvcc_flags object_files)
4382
4383
4384
4385
4386                -- Generates the link object required by separable compilation from the given
4387                   object files.  This is called automatically for CUDA_ADD_EXECUTABLE and
4388                   CUDA_ADD_LIBRARY, but can be called manually when using CUDA_WRAP_SRCS
4389                   directly.  When called from CUDA_ADD_LIBRARY or CUDA_ADD_EXECUTABLE the
4390                   nvcc_flags passed in are the same as the flags passed in via the OPTIONS
4391                   argument.  The only nvcc flag added automatically is the bitness flag as
4392                   specified by CUDA_64_BIT_DEVICE_CODE.  Note that this is a function
4393                   instead of a macro.
4394
4395
4396
4397
4398                CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ...
4399                                 [STATIC | SHARED | MODULE] [OPTIONS ...] )
4400                -- This is where all the magic happens.  CUDA_ADD_EXECUTABLE,
4401                   CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this
4402                   function under the hood.
4403
4404
4405
4406
4407                   Given the list of files (file0 file1 ... fileN) this macro generates
4408                   custom commands that generate either PTX or linkable objects (use "PTX" or
4409                   "OBJ" for the format argument to switch).  Files that don't end with .cu
4410                   or have the HEADER_FILE_ONLY property are ignored.
4411
4412
4413
4414
4415                   The arguments passed in after OPTIONS are extra command line options to
4416                   give to nvcc.  You can also specify per configuration options by
4417                   specifying the name of the configuration followed by the options.  General
4418                   options must preceed configuration specific options.  Not all
4419                   configurations need to be specified, only the ones provided will be used.
4420
4421
4422
4423
4424                      OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag"
4425                      DEBUG -g
4426                      RELEASE --use_fast_math
4427                      RELWITHDEBINFO --use_fast_math;-g
4428                      MINSIZEREL --use_fast_math
4429
4430
4431
4432
4433                   For certain configurations (namely VS generating object files with
4434                   CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will
4435                   be produced for the given cuda file.  This is because when you add the
4436                   cuda file to Visual Studio it knows that this file produces an object file
4437                   and will link in the resulting object file automatically.
4438
4439
4440
4441
4442                   This script will also generate a separate cmake script that is used at
4443                   build time to invoke nvcc.  This is for several reasons.
4444
4445
4446
4447
4448                     1. nvcc can return negative numbers as return values which confuses
4449                     Visual Studio into thinking that the command succeeded.  The script now
4450                     checks the error codes and produces errors when there was a problem.
4451
4452
4453
4454
4455                     2. nvcc has been known to not delete incomplete results when it
4456                     encounters problems.  This confuses build systems into thinking the
4457                     target was generated when in fact an unusable file exists.  The script
4458                     now deletes the output files if there was an error.
4459
4460
4461
4462
4463                     3. By putting all the options that affect the build into a file and then
4464                     make the build rule dependent on the file, the output files will be
4465                     regenerated when the options change.
4466
4467
4468
4469
4470                   This script also looks at optional arguments STATIC, SHARED, or MODULE to
4471                   determine when to target the object compilation for a shared library.
4472                   BUILD_SHARED_LIBS is ignored in CUDA_WRAP_SRCS, but it is respected in
4473                   CUDA_ADD_LIBRARY.  On some systems special flags are added for building
4474                   objects intended for shared libraries.  A preprocessor macro,
4475                   <target_name>_EXPORTS is defined when a shared library compilation is
4476                   detected.
4477
4478
4479
4480
4481                   Flags passed into add_definitions with -D or /D are passed along to nvcc.
4482
4483
4484
4485
4486              The script defines the following variables:
4487
4488
4489                CUDA_VERSION_MAJOR    -- The major version of cuda as reported by nvcc.
4490                CUDA_VERSION_MINOR    -- The minor version.
4491                CUDA_VERSION
4492                CUDA_VERSION_STRING   -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR
4493
4494
4495
4496
4497                CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set).
4498                CUDA_SDK_ROOT_DIR     -- Path to the CUDA SDK.  Use this to find files in the
4499                                         SDK.  This script will not directly support finding
4500                                         specific libraries or headers, as that isn't
4501                                         supported by NVIDIA.  If you want to change
4502                                         libraries when the path changes see the
4503                                         FindCUDA.cmake script for an example of how to clear
4504                                         these variables.  There are also examples of how to
4505                                         use the CUDA_SDK_ROOT_DIR to locate headers or
4506                                         libraries, if you so choose (at your own risk).
4507                CUDA_INCLUDE_DIRS     -- Include directory for cuda headers.  Added automatically
4508                                         for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY.
4509                CUDA_LIBRARIES        -- Cuda RT library.
4510                CUDA_CUFFT_LIBRARIES  -- Device or emulation library for the Cuda FFT
4511                                         implementation (alternative to:
4512                                         CUDA_ADD_CUFFT_TO_TARGET macro)
4513                CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS
4514                                         implementation (alterative to:
4515                                         CUDA_ADD_CUBLAS_TO_TARGET macro).
4516                CUDA_cupti_LIBRARY    -- CUDA Profiling Tools Interface library.
4517                                         Only available for CUDA version 4.0+.
4518                CUDA_curand_LIBRARY   -- CUDA Random Number Generation library.
4519                                         Only available for CUDA version 3.2+.
4520                CUDA_cusparse_LIBRARY -- CUDA Sparse Matrix library.
4521                                         Only available for CUDA version 3.2+.
4522                CUDA_npp_LIBRARY      -- NVIDIA Performance Primitives library.
4523                                         Only available for CUDA version 4.0+.
4524                CUDA_nppc_LIBRARY      -- NVIDIA Performance Primitives library (core).
4525                                         Only available for CUDA version 5.5+.
4526                CUDA_nppi_LIBRARY      -- NVIDIA Performance Primitives library (image processing).
4527                                         Only available for CUDA version 5.5+.
4528                CUDA_npps_LIBRARY      -- NVIDIA Performance Primitives library (signal processing).
4529                                         Only available for CUDA version 5.5+.
4530                CUDA_nvcuvenc_LIBRARY -- CUDA Video Encoder library.
4531                                         Only available for CUDA version 3.2+.
4532                                         Windows only.
4533                CUDA_nvcuvid_LIBRARY  -- CUDA Video Decoder library.
4534                                         Only available for CUDA version 3.2+.
4535                                         Windows only.
4536
4537
4538
4539
4540
4541
4542
4543                James Bigler, NVIDIA Corp (nvidia.com - jbigler)
4544                Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
4545
4546
4547
4548
4549                Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
4550
4551
4552
4553
4554                Copyright (c) 2007-2009
4555                Scientific Computing and Imaging Institute, University of Utah
4556
4557
4558
4559
4560                This code is licensed under the MIT License.  See the FindCUDA.cmake script
4561                for the text of the license.
4562
4563
4564       FindCURL
4565              Find curl
4566
4567              Find the native CURL headers and libraries.
4568
4569
4570                CURL_INCLUDE_DIRS   - where to find curl/curl.h, etc.
4571                CURL_LIBRARIES      - List of libraries when using curl.
4572                CURL_FOUND          - True if curl found.
4573                CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)
4574
4575
4576       FindCVS
4577
4578
4579              The module defines the following variables:
4580
4581
4582                 CVS_EXECUTABLE - path to cvs command line client
4583                 CVS_FOUND - true if the command line client was found
4584
4585              Example usage:
4586
4587
4588                 find_package(CVS)
4589                 if(CVS_FOUND)
4590                   message("CVS found: ${CVS_EXECUTABLE}")
4591                 endif()
4592
4593
4594       FindCoin3D
4595              Find Coin3D (Open Inventor)
4596
4597              Coin3D  is  an  implementation of the Open Inventor API. It pro‐
4598              vides  data  structures  and  algorithms  for  3D  visualization
4599              http://www.coin3d.org/
4600
4601
4602              This module defines the following variables
4603
4604
4605                COIN3D_FOUND         - system has Coin3D - Open Inventor
4606                COIN3D_INCLUDE_DIRS  - where the Inventor include directory can be found
4607                COIN3D_LIBRARIES     - Link to this to use Coin3D
4608
4609
4610
4611
4612
4613       FindCups
4614              Try to find the Cups printing system
4615
4616              Once done this will define
4617
4618
4619                CUPS_FOUND - system has Cups
4620                CUPS_INCLUDE_DIR - the Cups include directory
4621                CUPS_LIBRARIES - Libraries needed to use Cups
4622                CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8)
4623                Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which
4624                features this function (i.e. at least 1.1.19)
4625
4626
4627       FindCurses
4628              Find the curses include file and library
4629
4630
4631
4632
4633                CURSES_FOUND - system has Curses
4634                CURSES_INCLUDE_DIR - the Curses include directory
4635                CURSES_LIBRARIES - The libraries needed to use Curses
4636                CURSES_HAVE_CURSES_H - true if curses.h is available
4637                CURSES_HAVE_NCURSES_H - true if ncurses.h is available
4638                CURSES_HAVE_NCURSES_NCURSES_H - true if ncurses/ncurses.h is available
4639                CURSES_HAVE_NCURSES_CURSES_H - true if ncurses/curses.h is available
4640                CURSES_LIBRARY - set for backwards compatibility with 2.4 CMake
4641
4642
4643
4644
4645              Set  CURSES_NEED_NCURSES  to TRUE before the find_package() com‐
4646              mand if NCurses functionality is required.
4647
4648
4649       FindCxxTest
4650              Find CxxTest
4651
4652              Find the CxxTest suite and declare a helper macro  for  creating
4653              unit  tests and integrating them with CTest. For more details on
4654              CxxTest see http://cxxtest.tigris.org
4655
4656
4657              INPUT Variables
4658
4659
4660                 CXXTEST_USE_PYTHON [deprecated since 1.3]
4661                     Only used in the case both Python & Perl
4662                     are detected on the system to control
4663                     which CxxTest code generator is used.
4664                     Valid only for CxxTest version 3.
4665
4666
4667
4668
4669                     NOTE: In older versions of this Find Module,
4670                     this variable controlled if the Python test
4671                     generator was used instead of the Perl one,
4672                     regardless of which scripting language the
4673                     user had installed.
4674
4675
4676
4677
4678                 CXXTEST_TESTGEN_ARGS (since CMake 2.8.3)
4679                     Specify a list of options to pass to the CxxTest code
4680                     generator.  If not defined, --error-printer is
4681                     passed.
4682
4683
4684
4685
4686              OUTPUT Variables
4687
4688
4689                 CXXTEST_FOUND
4690                     True if the CxxTest framework was found
4691                 CXXTEST_INCLUDE_DIRS
4692                     Where to find the CxxTest include directory
4693                 CXXTEST_PERL_TESTGEN_EXECUTABLE
4694                     The perl-based test generator
4695                 CXXTEST_PYTHON_TESTGEN_EXECUTABLE
4696                     The python-based test generator
4697                 CXXTEST_TESTGEN_EXECUTABLE (since CMake 2.8.3)
4698                     The test generator that is actually used (chosen using user preferences
4699                     and interpreters found in the system)
4700                 CXXTEST_TESTGEN_INTERPRETER (since CMake 2.8.3)
4701                     The full path to the Perl or Python executable on the system
4702
4703
4704
4705
4706              MACROS for optional use by CMake users:
4707
4708
4709                  CXXTEST_ADD_TEST(<test_name> <gen_source_file> <input_files_to_testgen...>)
4710                     Creates a CxxTest runner and adds it to the CTest testing suite
4711                     Parameters:
4712                         test_name               The name of the test
4713                         gen_source_file         The generated source filename to be
4714                                                 generated by CxxTest
4715                         input_files_to_testgen  The list of header files containing the
4716                                                 CxxTest::TestSuite's to be included in
4717                                                 this runner
4718
4719
4720
4721
4722                     #==============
4723                     Example Usage:
4724
4725
4726
4727
4728                         find_package(CxxTest)
4729                         if(CXXTEST_FOUND)
4730                             include_directories(${CXXTEST_INCLUDE_DIR})
4731                             enable_testing()
4732
4733
4734
4735
4736                             CXXTEST_ADD_TEST(unittest_foo foo_test.cc
4737                                               ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h)
4738                             target_link_libraries(unittest_foo foo) # as needed
4739                         endif()
4740
4741
4742
4743
4744                            This will (if CxxTest is found):
4745                            1. Invoke the testgen executable to autogenerate foo_test.cc in the
4746                               binary tree from "foo_test.h" in the current source directory.
4747                            2. Create an executable and test called unittest_foo.
4748
4749
4750
4751
4752                    #=============
4753                    Example foo_test.h:
4754
4755
4756
4757
4758                        #include <cxxtest/TestSuite.h>
4759
4760
4761
4762
4763                        class MyTestSuite : public CxxTest::TestSuite
4764                        {
4765                        public:
4766                           void testAddition( void )
4767                           {
4768                              TS_ASSERT( 1 + 1 > 1 );
4769                              TS_ASSERT_EQUALS( 1 + 1, 2 );
4770                           }
4771                        };
4772
4773
4774
4775
4776
4777       FindCygwin
4778              this module looks for Cygwin
4779
4780
4781
4782
4783
4784       FindDCMTK
4785              find DCMTK libraries and applications
4786
4787
4788
4789
4790
4791       FindDart
4792              Find DART
4793
4794              This module  looks  for  the  dart  testing  software  and  sets
4795              DART_ROOT to point to where it found it.
4796
4797
4798
4799       FindDevIL
4800
4801
4802              This  module  locates the developer's image library. http://ope
4803              nil.sourceforge.net/
4804
4805
4806              This module sets:
4807
4808
4809                 IL_LIBRARIES -   the name of the IL library. These include the full path to
4810                                  the core DevIL library. This one has to be linked into the
4811                                  application.
4812                 ILU_LIBRARIES -  the name of the ILU library. Again, the full path. This
4813                                  library is for filters and effects, not actual loading. It
4814                                  doesn't have to be linked if the functionality it provides
4815                                  is not used.
4816                 ILUT_LIBRARIES - the name of the ILUT library. Full path. This part of the
4817                                  library interfaces with OpenGL. It is not strictly needed
4818                                  in applications.
4819                 IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files.
4820                 IL_FOUND -       this is set to TRUE if all the above variables were set.
4821                                  This will be set to false if ILU or ILUT are not found,
4822                                  even if they are not needed. In most systems, if one
4823                                  library is found all the others are as well. That's the
4824                                  way the DevIL developers release it.
4825
4826
4827       FindDoxygen
4828              This module looks for Doxygen and the path to Graphviz's dot
4829
4830              Doxygen  is  a  documentation  generation  tool.    Please   see
4831              http://www.doxygen.org
4832
4833
4834              This module accepts the following optional variables:
4835
4836
4837                 DOXYGEN_SKIP_DOT       = If true this module will skip trying to find Dot
4838                                          (an optional component often used by Doxygen)
4839
4840
4841
4842
4843              This modules defines the following variables:
4844
4845
4846                 DOXYGEN_EXECUTABLE     = The path to the doxygen command.
4847                 DOXYGEN_FOUND          = Was Doxygen found or not?
4848                 DOXYGEN_VERSION        = The version reported by doxygen --version
4849
4850
4851
4852
4853                 DOXYGEN_DOT_EXECUTABLE = The path to the dot program used by doxygen.
4854                 DOXYGEN_DOT_FOUND      = Was Dot found or not?
4855                 DOXYGEN_DOT_PATH       = The path to dot not including the executable
4856
4857
4858
4859
4860
4861
4862
4863
4864       FindEXPAT
4865              Find expat
4866
4867              Find the native EXPAT headers and libraries.
4868
4869
4870                EXPAT_INCLUDE_DIRS - where to find expat.h, etc.
4871                EXPAT_LIBRARIES    - List of libraries when using expat.
4872                EXPAT_FOUND        - True if expat found.
4873
4874
4875       FindFLEX
4876              Find  flex  executable  and  provides a macro to generate custom
4877              build rules
4878
4879
4880
4881
4882              The module defines the following variables:
4883
4884
4885                FLEX_FOUND - true is flex executable is found
4886                FLEX_EXECUTABLE - the path to the flex executable
4887                FLEX_VERSION - the version of flex
4888                FLEX_LIBRARIES - The flex libraries
4889                FLEX_INCLUDE_DIRS - The path to the flex headers
4890
4891
4892
4893
4894              The minimum required version of flex can be specified using  the
4895              standard syntax, e.g. find_package(FLEX 2.5.13)
4896
4897
4898
4899
4900
4901              If flex is found on the system, the module provides the macro:
4902
4903
4904                FLEX_TARGET(Name FlexInput FlexOutput [COMPILE_FLAGS <string>])
4905
4906              which  creates  a  custom  command  to generate the <FlexOutput>
4907              file from the <FlexInput> file.   If   COMPILE_FLAGS  option  is
4908              specified,  the  next  parameter  is  added to the flex  command
4909              line. Name is an alias used to  get   details  of   this  custom
4910              command.  Indeed the  macro defines  the following variables:
4911
4912
4913                FLEX_${Name}_DEFINED - true is the macro ran successfully
4914                FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
4915                alias for FlexOutput
4916                FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput}
4917
4918
4919
4920
4921              Flex  scanners  oftenly  use  tokens  defined by Bison: the code
4922              generated by Flex  depends of the header   generated  by  Bison.
4923              This module also defines a macro:
4924
4925
4926                ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget)
4927
4928              which   adds the  required dependency  between a  scanner and  a
4929              parser where  <FlexTarget>  and <BisonTarget>  are   the   first
4930              parameters  of respectively FLEX_TARGET and BISON_TARGET macros.
4931
4932
4933                ====================================================================
4934                Example:
4935
4936
4937
4938
4939                 find_package(BISON)
4940                 find_package(FLEX)
4941
4942
4943
4944
4945                 BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
4946                 FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
4947                 ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
4948
4949
4950
4951
4952                 include_directories(${CMAKE_CURRENT_BINARY_DIR})
4953                 add_executable(Foo
4954                    Foo.cc
4955                    ${BISON_MyParser_OUTPUTS}
4956                    ${FLEX_MyScanner_OUTPUTS}
4957                 )
4958                ====================================================================
4959
4960
4961       FindFLTK
4962              Find the native FLTK includes and library
4963
4964
4965
4966
4967              By default FindFLTK.cmake will search for all of the FLTK compo‐
4968              nents and add them to the FLTK_LIBRARIES variable.
4969
4970
4971                 You can limit the components which get placed in FLTK_LIBRARIES by
4972                 defining one or more of the following three options:
4973
4974
4975
4976
4977                   FLTK_SKIP_OPENGL, set to true to disable searching for opengl and
4978                                     the FLTK GL library
4979                   FLTK_SKIP_FORMS, set to true to disable searching for fltk_forms
4980                   FLTK_SKIP_IMAGES, set to true to disable searching for fltk_images
4981
4982
4983
4984
4985                   FLTK_SKIP_FLUID, set to true if the fluid binary need not be present
4986                                    at build time
4987
4988
4989
4990
4991              The following variables will be defined:
4992
4993
4994                   FLTK_FOUND, True if all components not skipped were found
4995                   FLTK_INCLUDE_DIR, where to find include files
4996                   FLTK_LIBRARIES, list of fltk libraries you should link against
4997                   FLTK_FLUID_EXECUTABLE, where to find the Fluid tool
4998                   FLTK_WRAP_UI, This enables the FLTK_WRAP_UI command
4999
5000
5001
5002
5003              The following cache variables are assigned  but  should  not  be
5004              used. See the FLTK_LIBRARIES variable instead.
5005
5006
5007                   FLTK_BASE_LIBRARY   = the full path to fltk.lib
5008                   FLTK_GL_LIBRARY     = the full path to fltk_gl.lib
5009                   FLTK_FORMS_LIBRARY  = the full path to fltk_forms.lib
5010                   FLTK_IMAGES_LIBRARY = the full path to fltk_images.lib
5011
5012
5013       FindFLTK2
5014              Find the native FLTK2 includes and library
5015
5016              The following settings are defined
5017
5018
5019                FLTK2_FLUID_EXECUTABLE, where to find the Fluid tool
5020                FLTK2_WRAP_UI, This enables the FLTK2_WRAP_UI command
5021                FLTK2_INCLUDE_DIR, where to find include files
5022                FLTK2_LIBRARIES, list of fltk2 libraries
5023                FLTK2_FOUND, Don't use FLTK2 if false.
5024
5025              The following settings should not be used in general.
5026
5027
5028                FLTK2_BASE_LIBRARY   = the full path to fltk2.lib
5029                FLTK2_GL_LIBRARY     = the full path to fltk2_gl.lib
5030                FLTK2_IMAGES_LIBRARY = the full path to fltk2_images.lib
5031
5032
5033       FindFreetype
5034              Locate FreeType library
5035
5036              This module defines
5037
5038
5039                FREETYPE_LIBRARIES, the library to link against
5040                FREETYPE_FOUND, if false, do not try to link to FREETYPE
5041                FREETYPE_INCLUDE_DIRS, where to find headers.
5042                FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8)
5043                This is the concatenation of the paths:
5044                FREETYPE_INCLUDE_DIR_ft2build
5045                FREETYPE_INCLUDE_DIR_freetype2
5046
5047
5048
5049
5050              $FREETYPE_DIR  is  an environment variable that would correspond
5051              to  the  ./configure  --prefix=$FREETYPE_DIR  used  in  building
5052              FREETYPE.
5053
5054
5055       FindGCCXML
5056              Find the GCC-XML front-end executable.
5057
5058
5059
5060
5061              This module will define the following variables:
5062
5063
5064                GCCXML - the GCC-XML front-end executable.
5065
5066
5067       FindGDAL
5068
5069
5070              Locate gdal
5071
5072
5073              This module accepts the following environment variables:
5074
5075
5076                  GDAL_DIR or GDAL_ROOT - Specify the location of GDAL
5077
5078
5079
5080
5081              This module defines the following CMake variables:
5082
5083
5084                  GDAL_FOUND - True if libgdal is found
5085                  GDAL_LIBRARY - A variable pointing to the GDAL library
5086                  GDAL_INCLUDE_DIR - Where to find the headers
5087
5088
5089       FindGIF
5090
5091
5092              This   module   searches  giflib  and  defines  GIF_LIBRARIES  -
5093              libraries to link to in order to use GIF GIF_FOUND, if false, do
5094              not  try  to  link  GIF_INCLUDE_DIR,  where  to find the headers
5095              GIF_VERSION, reports either  version  4  or  3  (for  everything
5096              before version 4)
5097
5098
5099              The  minimum  required  version of giflib can be specified using
5100              the standard syntax, e.g. find_package(GIF 4)
5101
5102
5103              $GIF_DIR is an environment variable that would correspond to the
5104              ./configure --prefix=$GIF_DIR
5105
5106
5107       FindGLEW
5108              Find the OpenGL Extension Wrangler Library (GLEW)
5109
5110              This module defines the following variables:
5111
5112
5113                GLEW_INCLUDE_DIRS - include directories for GLEW
5114                GLEW_LIBRARIES - libraries to link against GLEW
5115                GLEW_FOUND - true if GLEW has been found and can be used
5116
5117
5118       FindGLUT
5119              try to find glut library and include files
5120
5121                GLUT_INCLUDE_DIR, where to find GL/glut.h, etc.
5122                GLUT_LIBRARIES, the libraries to link against
5123                GLUT_FOUND, If false, do not try to use GLUT.
5124
5125              Also defined, but not for general use are:
5126
5127
5128                GLUT_glut_LIBRARY = the full path to the glut library.
5129                GLUT_Xmu_LIBRARY  = the full path to the Xmu library.
5130                GLUT_Xi_LIBRARY   = the full path to the Xi Library.
5131
5132
5133       FindGTK
5134              try to find GTK (and glib) and GTKGLArea
5135
5136                GTK_INCLUDE_DIR   - Directories to include to use GTK
5137                GTK_LIBRARIES     - Files to link against to use GTK
5138                GTK_FOUND         - GTK was found
5139                GTK_GL_FOUND      - GTK's GL features were found
5140
5141
5142       FindGTK2
5143              FindGTK2.cmake
5144
5145              This  module  can  find the GTK2 widget libraries and several of
5146              its other optional components like gtkmm, glade, and glademm.
5147
5148
5149              NOTE: If you intend to use  version  checking,  CMake  2.6.2  or
5150              later is
5151
5152
5153                     required.
5154
5155
5156
5157
5158              Specify one or more of the following components as you call this
5159              find module. See example below.
5160
5161
5162                 gtk
5163                 gtkmm
5164                 glade
5165                 glademm
5166
5167
5168
5169
5170              The following variables will be defined for your use
5171
5172
5173                 GTK2_FOUND - Were all of your specified components found?
5174                 GTK2_INCLUDE_DIRS - All include directories
5175                 GTK2_LIBRARIES - All libraries
5176                 GTK2_DEFINITIONS - Additional compiler flags
5177
5178
5179
5180
5181                 GTK2_VERSION - The version of GTK2 found (x.y.z)
5182                 GTK2_MAJOR_VERSION - The major version of GTK2
5183                 GTK2_MINOR_VERSION - The minor version of GTK2
5184                 GTK2_PATCH_VERSION - The patch version of GTK2
5185
5186
5187
5188
5189              Optional variables you can define prior to calling this module:
5190
5191
5192                 GTK2_DEBUG - Enables verbose debugging of the module
5193                 GTK2_ADDITIONAL_SUFFIXES - Allows defining additional directories to
5194                                            search for include files
5195
5196
5197
5198
5199              ================= Example Usage:
5200
5201
5202                 Call find_package() once, here are some examples to pick from:
5203
5204
5205
5206
5207                 Require GTK 2.6 or later
5208                     find_package(GTK2 2.6 REQUIRED gtk)
5209
5210
5211
5212
5213                 Require GTK 2.10 or later and Glade
5214                     find_package(GTK2 2.10 REQUIRED gtk glade)
5215
5216
5217
5218
5219                 Search for GTK/GTKMM 2.8 or later
5220                     find_package(GTK2 2.8 COMPONENTS gtk gtkmm)
5221
5222
5223
5224
5225                 if(GTK2_FOUND)
5226                    include_directories(${GTK2_INCLUDE_DIRS})
5227                    add_executable(mygui mygui.cc)
5228                    target_link_libraries(mygui ${GTK2_LIBRARIES})
5229                 endif()
5230
5231
5232
5233
5234
5235       FindGTest
5236              --------------------
5237
5238              Locate the Google C++ Testing Framework.
5239
5240
5241              Defines the following variables:
5242
5243
5244                 GTEST_FOUND - Found the Google Testing framework
5245                 GTEST_INCLUDE_DIRS - Include directories
5246
5247
5248
5249
5250              Also defines the library variables below  as  normal  variables.
5251              These  contain debug/optimized keywords when a debugging library
5252              is found.
5253
5254
5255                 GTEST_BOTH_LIBRARIES - Both libgtest & libgtest-main
5256                 GTEST_LIBRARIES - libgtest
5257                 GTEST_MAIN_LIBRARIES - libgtest-main
5258
5259
5260
5261
5262              Accepts the following variables as input:
5263
5264
5265                 GTEST_ROOT - (as a CMake or environment variable)
5266                              The root directory of the gtest install prefix
5267
5268
5269
5270
5271                 GTEST_MSVC_SEARCH - If compiling with MSVC, this variable can be set to
5272                                     "MD" or "MT" to enable searching a GTest build tree
5273                                     (defaults: "MD")
5274
5275
5276
5277
5278              Example Usage:
5279
5280
5281                  enable_testing()
5282                  find_package(GTest REQUIRED)
5283                  include_directories(${GTEST_INCLUDE_DIRS})
5284
5285
5286
5287
5288                  add_executable(foo foo.cc)
5289                  target_link_libraries(foo ${GTEST_BOTH_LIBRARIES})
5290
5291
5292
5293
5294                  add_test(AllTestsInFoo foo)
5295
5296
5297
5298
5299
5300
5301
5302              If you would like each Google test to show up in CTest as a test
5303              you  may  use  the following macro. NOTE: It will slow down your
5304              tests by running an executable for each test and  test  fixture.
5305              You will also have to rerun CMake after adding or removing tests
5306              or test fixtures.
5307
5308
5309              GTEST_ADD_TESTS(executable extra_args ARGN)
5310
5311
5312                  executable = The path to the test executable
5313                  extra_args = Pass a list of extra arguments to be passed to
5314                               executable enclosed in quotes (or "" for none)
5315                  ARGN =       A list of source files to search for tests & test
5316                               fixtures.
5317
5318
5319
5320
5321                Example:
5322                   set(FooTestArgs --foo 1 --bar 2)
5323                   add_executable(FooTest FooUnitTest.cc)
5324                   GTEST_ADD_TESTS(FooTest "${FooTestArgs}" FooUnitTest.cc)
5325
5326
5327       FindGettext
5328              Find GNU gettext tools
5329
5330              This module looks for the GNU gettext tools. This module defines
5331              the following values:
5332
5333
5334                GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool.
5335                GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool.
5336                GETTEXT_FOUND: True if gettext has been found.
5337                GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8)
5338
5339
5340
5341
5342              Additionally  it  provides  the  following  macros: GETTEXT_CRE‐
5343              ATE_TRANSLATIONS ( outputFile [ALL] file1 ... fileN )
5344
5345
5346                  This will create a target "translations" which will convert the
5347                  given input po files into the binary output mo file. If the
5348                  ALL option is used, the translations will also be created when
5349                  building the default target.
5350
5351              GETTEXT_PROCESS_POT( <potfile> [ALL] [INSTALL_DESTINATION <dest‐
5352              dir>] LANGUAGES <lang1> <lang2> ... )
5353
5354
5355                   Process the given pot file to mo files.
5356                   If INSTALL_DESTINATION is given then automatically install rules will be created,
5357                   the language subdirectory will be taken into account (by default use share/locale/).
5358                   If ALL is specified, the pot file is processed when building the all traget.
5359                   It creates a custom target "potfile".
5360
5361              GETTEXT_PROCESS_PO_FILES(   <lang>   [ALL]  [INSTALL_DESTINATION
5362              <dir>] PO_FILES <po1> <po2> ... )
5363
5364
5365                   Process the given po files to mo files for the given language.
5366                   If INSTALL_DESTINATION is given then automatically install rules will be created,
5367                   the language subdirectory will be taken into account (by default use share/locale/).
5368                   If ALL is specified, the po files are processed when building the all traget.
5369                   It creates a custom target "pofiles".
5370
5371
5372       FindGit
5373
5374
5375              The module defines the following variables:
5376
5377
5378                 GIT_EXECUTABLE - path to git command line client
5379                 GIT_FOUND - true if the command line client was found
5380                 GIT_VERSION_STRING - the version of git found (since CMake 2.8.8)
5381
5382              Example usage:
5383
5384
5385                 find_package(Git)
5386                 if(GIT_FOUND)
5387                   message("git found: ${GIT_EXECUTABLE}")
5388                 endif()
5389
5390
5391       FindGnuTLS
5392              Try to find the GNU Transport Layer Security library (gnutls)
5393
5394
5395
5396
5397              Once done this will define
5398
5399
5400                GNUTLS_FOUND - System has gnutls
5401                GNUTLS_INCLUDE_DIR - The gnutls include directory
5402                GNUTLS_LIBRARIES - The libraries needed to use gnutls
5403                GNUTLS_DEFINITIONS - Compiler switches required for using gnutls
5404
5405
5406       FindGnuplot
5407              this module looks for gnuplot
5408
5409
5410
5411
5412              Once done this will define
5413
5414
5415                GNUPLOT_FOUND - system has Gnuplot
5416                GNUPLOT_EXECUTABLE - the Gnuplot executable
5417                GNUPLOT_VERSION_STRING - the version of Gnuplot found (since CMake 2.8.8)
5418
5419
5420
5421
5422              GNUPLOT_VERSION_STRING will  not  work  for  old  versions  like
5423              3.7.1.
5424
5425
5426       FindHDF5
5427              Find  HDF5,  a  library  for reading and writing self describing
5428              array data.
5429
5430
5431
5432
5433              This module invokes the HDF5 wrapper  compiler  that  should  be
5434              installed  alongside  HDF5.   Depending upon the HDF5 Configura‐
5435              tion, the wrapper compiler is called either h5cc or  h5pcc.   If
5436              this  succeeds,  the module will then call the compiler with the
5437              -show argument to see what flags are used when compiling an HDF5
5438              client application.
5439
5440
5441              The  module  will optionally accept the COMPONENTS argument.  If
5442              no COMPONENTS are specified, then the find module  will  default
5443              to  finding  only the HDF5 C library.  If one or more COMPONENTS
5444              are specified, the module will  attempt  to  find  the  language
5445              bindings  for  the  specified components.  The only valid compo‐
5446              nents are C, CXX, Fortran, HL, and Fortran_HL.   If  the  COMPO‐
5447              NENTS  argument  is  not  given, the module will attempt to find
5448              only the C bindings.
5449
5450
5451              On  UNIX  systems,  this   module   will   read   the   variable
5452              HDF5_USE_STATIC_LIBRARIES  to determine whether or not to prefer
5453              a static link to a dynamic link for HDF5 and all of it's  depen‐
5454              dencies.    To   use   this   feature,   make   sure   that  the
5455              HDF5_USE_STATIC_LIBRARIES variable is set  before  the  call  to
5456              find_package.
5457
5458
5459              To  provide the module with a hint about where to find your HDF5
5460              installation, you can set the  environment  variable  HDF5_ROOT.
5461              The  Find  module will then look in this path when searching for
5462              HDF5 executables, paths, and libraries.
5463
5464
5465              In addition to finding the includes and  libraries  required  to
5466              compile  an  HDF5  client application, this module also makes an
5467              effort to find tools that come with the HDF5  distribution  that
5468              may be useful for regression testing.
5469
5470
5471              This module will define the following variables:
5472
5473
5474                HDF5_INCLUDE_DIRS - Location of the hdf5 includes
5475                HDF5_INCLUDE_DIR - Location of the hdf5 includes (deprecated)
5476                HDF5_DEFINITIONS - Required compiler definitions for HDF5
5477                HDF5_C_LIBRARIES - Required libraries for the HDF5 C bindings.
5478                HDF5_CXX_LIBRARIES - Required libraries for the HDF5 C++ bindings
5479                HDF5_Fortran_LIBRARIES - Required libraries for the HDF5 Fortran bindings
5480                HDF5_HL_LIBRARIES - Required libraries for the HDF5 high level API
5481                HDF5_Fortran_HL_LIBRARIES - Required libraries for the high level Fortran
5482                                            bindings.
5483                HDF5_LIBRARIES - Required libraries for all requested bindings
5484                HDF5_FOUND - true if HDF5 was found on the system
5485                HDF5_LIBRARY_DIRS - the full set of library directories
5486                HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support
5487                HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler
5488                HDF5_CXX_COMPILER_EXECUTABLE - the path to the HDF5 C++ wrapper compiler
5489                HDF5_Fortran_COMPILER_EXECUTABLE - the path to the HDF5 Fortran wrapper compiler
5490                HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool
5491
5492
5493       FindHSPELL
5494              Try to find Hspell
5495
5496              Once done this will define
5497
5498
5499                HSPELL_FOUND - system has Hspell
5500                HSPELL_INCLUDE_DIR - the Hspell include directory
5501                HSPELL_LIBRARIES - The libraries needed to use Hspell
5502                HSPELL_DEFINITIONS - Compiler switches required for using Hspell
5503
5504
5505
5506
5507                HSPELL_VERSION_STRING - The version of Hspell found (x.y)
5508                HSPELL_MAJOR_VERSION  - the major version of Hspell
5509                HSPELL_MINOR_VERSION  - The minor version of Hspell
5510
5511
5512       FindHTMLHelp
5513              This module looks for Microsoft HTML Help Compiler
5514
5515              It defines:
5516
5517
5518                 HTML_HELP_COMPILER     : full path to the Compiler (hhc.exe)
5519                 HTML_HELP_INCLUDE_PATH : include path to the API (htmlhelp.h)
5520                 HTML_HELP_LIBRARY      : full path to the library (htmlhelp.lib)
5521
5522
5523
5524
5525
5526       FindHg
5527
5528
5529              The module defines the following variables:
5530
5531
5532                 HG_EXECUTABLE - path to mercurial command line client (hg)
5533                 HG_FOUND - true if the command line client was found
5534                 HG_VERSION_STRING - the version of mercurial found
5535
5536              Example usage:
5537
5538
5539                 find_package(Hg)
5540                 if(HG_FOUND)
5541                   message("hg found: ${HG_EXECUTABLE}")
5542                 endif()
5543
5544
5545       FindITK
5546              Find an ITK installation or build tree.
5547
5548
5549       FindIcotool
5550              Find icotool
5551
5552              This module looks for icotool. This module defines the following
5553              values:
5554
5555
5556                ICOTOOL_EXECUTABLE: the full path to the icotool tool.
5557                ICOTOOL_FOUND: True if icotool has been found.
5558                ICOTOOL_VERSION_STRING: the version of icotool found.
5559
5560
5561
5562
5563
5564       FindImageMagick
5565              Find the ImageMagick binary suite.
5566
5567              This module will search for a set of ImageMagick tools specified
5568              as  components  in  the  FIND_PACKAGE  call.  Typical components
5569              include, but are not limited to (future versions of  ImageMagick
5570              might have additional components not listed here):
5571
5572
5573                animate
5574                compare
5575                composite
5576                conjure
5577                convert
5578                display
5579                identify
5580                import
5581                mogrify
5582                montage
5583                stream
5584
5585
5586
5587
5588              If  no  component is specified in the FIND_PACKAGE call, then it
5589              only searches for the  ImageMagick  executable  directory.  This
5590              code defines the following variables:
5591
5592
5593                ImageMagick_FOUND                  - TRUE if all components are found.
5594                ImageMagick_EXECUTABLE_DIR         - Full path to executables directory.
5595                ImageMagick_<component>_FOUND      - TRUE if <component> is found.
5596                ImageMagick_<component>_EXECUTABLE - Full path to <component> executable.
5597                ImageMagick_VERSION_STRING         - the version of ImageMagick found
5598                                                     (since CMake 2.8.8)
5599
5600
5601
5602
5603              ImageMagick_VERSION_STRING  will  not work for old versions like
5604              5.2.3.
5605
5606
5607              There are also components for the following ImageMagick APIs:
5608
5609
5610                Magick++
5611                MagickWand
5612                MagickCore
5613
5614
5615
5616
5617              For these components the following variables are set:
5618
5619
5620                ImageMagick_FOUND                    - TRUE if all components are found.
5621                ImageMagick_INCLUDE_DIRS             - Full paths to all include dirs.
5622                ImageMagick_LIBRARIES                - Full paths to all libraries.
5623                ImageMagick_<component>_FOUND        - TRUE if <component> is found.
5624                ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs.
5625                ImageMagick_<component>_LIBRARIES    - Full path to <component> libraries.
5626
5627
5628
5629
5630              Example Usages:
5631
5632
5633                find_package(ImageMagick)
5634                find_package(ImageMagick COMPONENTS convert)
5635                find_package(ImageMagick COMPONENTS convert mogrify display)
5636                find_package(ImageMagick COMPONENTS Magick++)
5637                find_package(ImageMagick COMPONENTS Magick++ convert)
5638
5639
5640
5641
5642              Note that  the  standard  FIND_PACKAGE  features  are  supported
5643              (i.e., QUIET, REQUIRED, etc.).
5644
5645
5646       FindJNI
5647              Find JNI java libraries.
5648
5649              This  module finds if Java is installed and determines where the
5650              include files and libraries are. It  also  determines  what  the
5651              name of the library is. This code sets the following variables:
5652
5653
5654                JNI_INCLUDE_DIRS      = the include dirs to use
5655                JNI_LIBRARIES         = the libraries to use
5656                JNI_FOUND             = TRUE if JNI headers and libraries were found.
5657                JAVA_AWT_LIBRARY      = the path to the jawt library
5658                JAVA_JVM_LIBRARY      = the path to the jvm library
5659                JAVA_INCLUDE_PATH     = the include path to jni.h
5660                JAVA_INCLUDE_PATH2    = the include path to jni_md.h
5661                JAVA_AWT_INCLUDE_PATH = the include path to jawt.h
5662
5663
5664
5665
5666
5667       FindJPEG
5668              Find JPEG
5669
5670              Find the native JPEG includes and library This module defines
5671
5672
5673                JPEG_INCLUDE_DIR, where to find jpeglib.h, etc.
5674                JPEG_LIBRARIES, the libraries needed to use JPEG.
5675                JPEG_FOUND, If false, do not try to use JPEG.
5676
5677              also defined, but not for general use are
5678
5679
5680                JPEG_LIBRARY, where to find the JPEG library.
5681
5682
5683       FindJasper
5684              Try to find the Jasper JPEG2000 library
5685
5686              Once done this will define
5687
5688
5689                JASPER_FOUND - system has Jasper
5690                JASPER_INCLUDE_DIR - the Jasper include directory
5691                JASPER_LIBRARIES - the libraries needed to use Jasper
5692                JASPER_VERSION_STRING - the version of Jasper found (since CMake 2.8.8)
5693
5694
5695       FindJava
5696              Find Java
5697
5698              This  module finds if Java is installed and determines where the
5699              include files and libraries are. This code  sets  the  following
5700              variables:
5701
5702
5703                Java_JAVA_EXECUTABLE    = the full path to the Java runtime
5704                Java_JAVAC_EXECUTABLE   = the full path to the Java compiler
5705                Java_JAVAH_EXECUTABLE   = the full path to the Java header generator
5706                Java_JAVADOC_EXECUTABLE = the full path to the Java documention generator
5707                Java_JAR_EXECUTABLE     = the full path to the Java archiver
5708                Java_VERSION_STRING     = Version of the package found (java version), eg. 1.6.0_12
5709                Java_VERSION_MAJOR      = The major version of the package found.
5710                Java_VERSION_MINOR      = The minor version of the package found.
5711                Java_VERSION_PATCH      = The patch version of the package found.
5712                Java_VERSION_TWEAK      = The tweak version of the package found (after '_')
5713                Java_VERSION            = This is set to: $major.$minor.$patch(.$tweak)
5714
5715
5716
5717
5718              The  minimum required version of Java can be specified using the
5719              standard CMake syntax, e.g. find_package(Java 1.5)
5720
5721
5722              NOTE: ${Java_VERSION} and ${Java_VERSION_STRING} are not guaran‐
5723              teed  to be identical. For example some java version may return:
5724              Java_VERSION_STRING  =  1.5.0_17   and   Java_VERSION          =
5725              1.5.0.17
5726
5727
5728              another  example  is  the  Java OEM, with: Java_VERSION_STRING =
5729              1.6.0-oem and Java_VERSION        = 1.6.0
5730
5731
5732              For these components the following variables are set:
5733
5734
5735                Java_FOUND                    - TRUE if all components are found.
5736                Java_INCLUDE_DIRS             - Full paths to all include dirs.
5737                Java_LIBRARIES                - Full paths to all libraries.
5738                Java_<component>_FOUND        - TRUE if <component> is found.
5739
5740
5741
5742
5743              Example Usages:
5744
5745
5746                find_package(Java)
5747                find_package(Java COMPONENTS Runtime)
5748                find_package(Java COMPONENTS Development)
5749
5750
5751
5752
5753
5754       FindKDE3
5755              Find the KDE3 include and library dirs,  KDE  preprocessors  and
5756              define a some macros
5757
5758
5759
5760
5761              This module defines the following variables:
5762
5763
5764                KDE3_DEFINITIONS         - compiler definitions required for compiling KDE software
5765                KDE3_INCLUDE_DIR         - the KDE include directory
5766                KDE3_INCLUDE_DIRS        - the KDE and the Qt include directory, for use with include_directories()
5767                KDE3_LIB_DIR             - the directory where the KDE libraries are installed, for use with link_directories()
5768                QT_AND_KDECORE_LIBS      - this contains both the Qt and the kdecore library
5769                KDE3_DCOPIDL_EXECUTABLE  - the dcopidl executable
5770                KDE3_DCOPIDL2CPP_EXECUTABLE - the dcopidl2cpp executable
5771                KDE3_KCFGC_EXECUTABLE    - the kconfig_compiler executable
5772                KDE3_FOUND               - set to TRUE if all of the above has been found
5773
5774
5775
5776
5777              The following user adjustable options are provided:
5778
5779
5780                KDE3_BUILD_TESTS - enable this to build KDE testcases
5781
5782
5783
5784
5785
5786
5787
5788              It  also  adds  the  following  macros  (from  KDE3Macros.cmake)
5789              SRCS_VAR is always the  variable  which  contains  the  list  of
5790              source files for your application or library.
5791
5792
5793              KDE3_AUTOMOC(file1 ... fileN)
5794
5795
5796                  Call this if you want to have automatic moc file handling.
5797                  This means if you include "foo.moc" in the source file foo.cpp
5798                  a moc file for the header foo.h will be created automatically.
5799                  You can set the property SKIP_AUTOMAKE using set_source_files_properties()
5800                  to exclude some files in the list from being processed.
5801
5802
5803
5804
5805              KDE3_ADD_MOC_FILES(SRCS_VAR file1 ... fileN )
5806
5807
5808                  If you don't use the KDE3_AUTOMOC() macro, for the files
5809                  listed here moc files will be created (named "foo.moc.cpp")
5810
5811
5812
5813
5814              KDE3_ADD_DCOP_SKELS(SRCS_VAR header1.h ... headerN.h )
5815
5816
5817                  Use this to generate DCOP skeletions from the listed headers.
5818
5819
5820
5821
5822              KDE3_ADD_DCOP_STUBS(SRCS_VAR header1.h ... headerN.h )
5823
5824
5825                   Use this to generate DCOP stubs from the listed headers.
5826
5827
5828
5829
5830              KDE3_ADD_UI_FILES(SRCS_VAR file1.ui ... fileN.ui )
5831
5832
5833                  Use this to add the Qt designer ui files to your application/library.
5834
5835
5836
5837
5838              KDE3_ADD_KCFG_FILES(SRCS_VAR file1.kcfgc ... fileN.kcfgc )
5839
5840
5841                  Use this to add KDE kconfig compiler files to your application/library.
5842
5843
5844
5845
5846              KDE3_INSTALL_LIBTOOL_FILE(target)
5847
5848
5849                  This will create and install a simple libtool file for the given target.
5850
5851
5852
5853
5854              KDE3_ADD_EXECUTABLE(name file1 ... fileN )
5855
5856
5857                  Currently identical to add_executable(), may provide some advanced features in the future.
5858
5859
5860
5861
5862              KDE3_ADD_KPART(name [WITH_PREFIX] file1 ... fileN )
5863
5864
5865                  Create a KDE plugin (KPart, kioslave, etc.) from the given source files.
5866                  If WITH_PREFIX is given, the resulting plugin will have the prefix "lib", otherwise it won't.
5867                  It creates and installs an appropriate libtool la-file.
5868
5869
5870
5871
5872              KDE3_ADD_KDEINIT_EXECUTABLE(name file1 ... fileN )
5873
5874
5875                  Create a KDE application in the form of a module loadable via kdeinit.
5876                  A library named kdeinit_<name> will be created and a small executable which links to it.
5877
5878
5879
5880
5881              The option KDE3_ENABLE_FINAL to enable all-in-one compilation is
5882              no longer supported.
5883
5884
5885
5886
5887
5888              Author: Alexander Neundorf <neundorf@kde.org>
5889
5890
5891       FindKDE4
5892
5893
5894              Find KDE4 and provide all necessary variables and macros to com‐
5895              pile software for it. It looks for KDE 4 in the following direc‐
5896              tories in the given order:
5897
5898
5899                CMAKE_INSTALL_PREFIX
5900                KDEDIRS
5901                /opt/kde4
5902
5903
5904
5905
5906              Please look in FindKDE4Internal.cmake and  KDE4Macros.cmake  for
5907              more information. They are installed with the KDE 4 libraries in
5908              $KDEDIRS/share/apps/cmake/modules/.
5909
5910
5911              Author: Alexander Neundorf <neundorf@kde.org>
5912
5913
5914       FindLAPACK
5915              Find LAPACK library
5916
5917              This module finds an installed fortran library  that  implements
5918              the       LAPACK       linear-algebra       interface       (see
5919              http://www.netlib.org/lapack/).
5920
5921
5922              The approach follows that taken for  the  autoconf  macro  file,
5923              acx_lapack.m4    (distributed    at    http://ac-archive.source
5924              forge.net/ac-archive/acx_lapack.html).
5925
5926
5927              This module sets the following variables:
5928
5929
5930                LAPACK_FOUND - set to true if a library implementing the LAPACK interface
5931                  is found
5932                LAPACK_LINKER_FLAGS - uncached list of required linker flags (excluding -l
5933                  and -L).
5934                LAPACK_LIBRARIES - uncached list of libraries (using full path name) to
5935                  link against to use LAPACK
5936                LAPACK95_LIBRARIES - uncached list of libraries (using full path name) to
5937                  link against to use LAPACK95
5938                LAPACK95_FOUND - set to true if a library implementing the LAPACK f95
5939                  interface is found
5940                BLA_STATIC  if set on this determines what kind of linkage we do (static)
5941                BLA_VENDOR  if set checks only the specified vendor, if not set checks
5942                   all the possibilities
5943                BLA_F95     if set on tries to find the f95 interfaces for BLAS/LAPACK
5944
5945
5946       FindLATEX
5947              Find Latex
5948
5949              This module finds if Latex is installed and determines where the
5950              executables are. This code sets the following variables:
5951
5952
5953                LATEX_COMPILER:       path to the LaTeX compiler
5954                PDFLATEX_COMPILER:    path to the PdfLaTeX compiler
5955                BIBTEX_COMPILER:      path to the BibTeX compiler
5956                MAKEINDEX_COMPILER:   path to the MakeIndex compiler
5957                DVIPS_CONVERTER:      path to the DVIPS converter
5958                PS2PDF_CONVERTER:     path to the PS2PDF converter
5959                LATEX2HTML_CONVERTER: path to the LaTeX2Html converter
5960
5961
5962
5963
5964
5965       FindLibArchive
5966              Find libarchive library and headers
5967
5968              The module defines the following variables:
5969
5970
5971                LibArchive_FOUND        - true if libarchive was found
5972                LibArchive_INCLUDE_DIRS - include search path
5973                LibArchive_LIBRARIES    - libraries to link
5974                LibArchive_VERSION      - libarchive 3-component version number
5975
5976
5977       FindLibLZMA
5978              Find LibLZMA
5979
5980              Find LibLZMA headers and library
5981
5982
5983                LIBLZMA_FOUND             - True if liblzma is found.
5984                LIBLZMA_INCLUDE_DIRS      - Directory where liblzma headers are located.
5985                LIBLZMA_LIBRARIES         - Lzma libraries to link against.
5986                LIBLZMA_HAS_AUTO_DECODER  - True if lzma_auto_decoder() is found (required).
5987                LIBLZMA_HAS_EASY_ENCODER  - True if lzma_easy_encoder() is found (required).
5988                LIBLZMA_HAS_LZMA_PRESET   - True if lzma_lzma_preset() is found (required).
5989                LIBLZMA_VERSION_MAJOR     - The major version of lzma
5990                LIBLZMA_VERSION_MINOR     - The minor version of lzma
5991                LIBLZMA_VERSION_PATCH     - The patch version of lzma
5992                LIBLZMA_VERSION_STRING    - version number as a string (ex: "5.0.3")
5993
5994
5995       FindLibXml2
5996              Try to find the LibXml2 xml processing library
5997
5998              Once done this will define
5999
6000
6001                LIBXML2_FOUND - System has LibXml2
6002                LIBXML2_INCLUDE_DIR - The LibXml2 include directory
6003                LIBXML2_LIBRARIES - The libraries needed to use LibXml2
6004                LIBXML2_DEFINITIONS - Compiler switches required for using LibXml2
6005                LIBXML2_XMLLINT_EXECUTABLE - The XML checking tool xmllint coming with LibXml2
6006                LIBXML2_VERSION_STRING - the version of LibXml2 found (since CMake 2.8.8)
6007
6008
6009       FindLibXslt
6010              Try to find the LibXslt library
6011
6012              Once done this will define
6013
6014
6015                LIBXSLT_FOUND - system has LibXslt
6016                LIBXSLT_INCLUDE_DIR - the LibXslt include directory
6017                LIBXSLT_LIBRARIES - Link these to LibXslt
6018                LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt
6019                LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8)
6020
6021              Additionally,  the  following  two  variables  are  set (but not
6022              required for using xslt):
6023
6024
6025                LIBXSLT_EXSLT_LIBRARIES - Link to these if you need to link against the exslt library
6026                LIBXSLT_XSLTPROC_EXECUTABLE - Contains the full path to the xsltproc executable if found
6027
6028
6029       FindLua50
6030
6031
6032              Locate Lua library This module defines
6033
6034
6035                LUA50_FOUND, if false, do not try to link to Lua
6036                LUA_LIBRARIES, both lua and lualib
6037                LUA_INCLUDE_DIR, where to find lua.h and lualib.h (and probably lauxlib.h)
6038
6039
6040
6041
6042              Note that the expected include convention is
6043
6044
6045                #include "lua.h"
6046
6047              and not
6048
6049
6050                #include <lua/lua.h>
6051
6052              This is because, the lua location is not  standardized  and  may
6053              exist in locations other than lua/
6054
6055
6056       FindLua51
6057
6058
6059              Locate Lua library This module defines
6060
6061
6062                LUA51_FOUND, if false, do not try to link to Lua
6063                LUA_LIBRARIES
6064                LUA_INCLUDE_DIR, where to find lua.h
6065                LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
6066
6067
6068
6069
6070              Note that the expected include convention is
6071
6072
6073                #include "lua.h"
6074
6075              and not
6076
6077
6078                #include <lua/lua.h>
6079
6080              This  is  because,  the lua location is not standardized and may
6081              exist in locations other than lua/
6082
6083
6084       FindLua52
6085
6086
6087              Locate Lua library This module defines
6088
6089
6090                LUA52_FOUND, if false, do not try to link to Lua
6091                LUA_LIBRARIES
6092                LUA_INCLUDE_DIR, where to find lua.h
6093                LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
6094
6095
6096
6097
6098              Note that the expected include convention is
6099
6100
6101                #include "lua.h"
6102
6103              and not
6104
6105
6106                #include <lua/lua.h>
6107
6108              This is because, the lua location is not  standardized  and  may
6109              exist in locations other than lua/
6110
6111
6112       FindMFC
6113              Find MFC on Windows
6114
6115              Find  the native MFC - i.e. decide if an application can link to
6116              the MFC libraries.
6117
6118
6119                MFC_FOUND - Was MFC support found
6120
6121              You don't need to include anything or link anything to use it.
6122
6123
6124       FindMPEG
6125              Find the native MPEG includes and library
6126
6127              This module defines
6128
6129
6130                MPEG_INCLUDE_DIR, where to find MPEG.h, etc.
6131                MPEG_LIBRARIES, the libraries required to use MPEG.
6132                MPEG_FOUND, If false, do not try to use MPEG.
6133
6134              also defined, but not for general use are
6135
6136
6137                MPEG_mpeg2_LIBRARY, where to find the MPEG library.
6138                MPEG_vo_LIBRARY, where to find the vo library.
6139
6140
6141       FindMPEG2
6142              Find the native MPEG2 includes and library
6143
6144              This module defines
6145
6146
6147                MPEG2_INCLUDE_DIR, path to mpeg2dec/mpeg2.h, etc.
6148                MPEG2_LIBRARIES, the libraries required to use MPEG2.
6149                MPEG2_FOUND, If false, do not try to use MPEG2.
6150
6151              also defined, but not for general use are
6152
6153
6154                MPEG2_mpeg2_LIBRARY, where to find the MPEG2 library.
6155                MPEG2_vo_LIBRARY, where to find the vo library.
6156
6157
6158       FindMPI
6159              Find a Message Passing Interface (MPI) implementation
6160
6161              The Message Passing Interface (MPI) is a library used  to  write
6162              high-performance  distributed-memory  parallel applications, and
6163              is typically deployed on a cluster. MPI is a standard  interface
6164              (defined  by  the  MPI forum) for which many implementations are
6165              available. All of them have somewhat  different  include  paths,
6166              libraries to link against, etc., and this module tries to smooth
6167              out those differences.
6168
6169
6170              === Variables ===
6171
6172
6173              This module will set the following  variables  per  language  in
6174              your project, where <lang> is one of C, CXX, or Fortran:
6175
6176
6177                 MPI_<lang>_FOUND           TRUE if FindMPI found MPI flags for <lang>
6178                 MPI_<lang>_COMPILER        MPI Compiler wrapper for <lang>
6179                 MPI_<lang>_COMPILE_FLAGS   Compilation flags for MPI programs
6180                 MPI_<lang>_INCLUDE_PATH    Include path(s) for MPI header
6181                 MPI_<lang>_LINK_FLAGS      Linking flags for MPI programs
6182                 MPI_<lang>_LIBRARIES       All libraries to link MPI programs against
6183
6184              Additionally,  FindMPI  sets the following variables for running
6185              MPI programs from the command line:
6186
6187
6188                 MPIEXEC                    Executable for running MPI programs
6189                 MPIEXEC_NUMPROC_FLAG       Flag to pass to MPIEXEC before giving
6190                                            it the number of processors to run on
6191                 MPIEXEC_PREFLAGS           Flags to pass to MPIEXEC directly
6192                                            before the executable to run.
6193                 MPIEXEC_POSTFLAGS          Flags to pass to MPIEXEC after other flags
6194
6195              === Usage ===
6196
6197
6198              To use this module, simply call FindMPI  from  a  CMakeLists.txt
6199              file,  or  run  find_package(MPI),  then  run CMake.  If you are
6200              happy with the auto- detected configuration for  your  language,
6201              then you're done.  If not, you have two options:
6202
6203
6204                 1. Set MPI_<lang>_COMPILER to the MPI wrapper (mpicc, etc.) of your
6205                    choice and reconfigure.  FindMPI will attempt to determine all the
6206                    necessary variables using THAT compiler's compile and link flags.
6207                 2. If this fails, or if your MPI implementation does not come with
6208                    a compiler wrapper, then set both MPI_<lang>_LIBRARIES and
6209                    MPI_<lang>_INCLUDE_PATH.  You may also set any other variables
6210                    listed above, but these two are required.  This will circumvent
6211                    autodetection entirely.
6212
6213              When  configuration  is  successful, MPI_<lang>_COMPILER will be
6214              set to the  compiler  wrapper  for  <lang>,  if  it  was  found.
6215              MPI_<lang>_FOUND  and  other  variables above will be set if any
6216              MPI implementation was found for <lang>, regardless of whether a
6217              compiler was found.
6218
6219
6220              When using MPIEXEC to execute MPI applications, you should typi‐
6221              cally use all of the MPIEXEC flags as follows:
6222
6223
6224                 ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} PROCS
6225                   ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
6226
6227              where PROCS is the number of processors on which to execute  the
6228              program,  EXECUTABLE  is the MPI program, and ARGS are the argu‐
6229              ments to pass to the MPI program.
6230
6231
6232              === Backward Compatibility ===
6233
6234
6235              For backward compatibility with older versions of FindMPI, these
6236              variables are set, but deprecated:
6237
6238
6239                 MPI_FOUND           MPI_COMPILER        MPI_LIBRARY
6240                 MPI_COMPILE_FLAGS   MPI_INCLUDE_PATH    MPI_EXTRA_LIBRARY
6241                 MPI_LINK_FLAGS      MPI_LIBRARIES
6242
6243              In new projects, please use the MPI_<lang>_XXX equivalents.
6244
6245
6246       FindMatlab
6247              this module looks for Matlab
6248
6249              Defines:
6250
6251
6252                MATLAB_INCLUDE_DIR: include path for mex.h, engine.h
6253                MATLAB_LIBRARIES:   required libraries: libmex, etc
6254                MATLAB_MEX_LIBRARY: path to libmex.lib
6255                MATLAB_MX_LIBRARY:  path to libmx.lib
6256                MATLAB_ENG_LIBRARY: path to libeng.lib
6257
6258
6259       FindMotif
6260              Try to find Motif (or lesstif)
6261
6262              Once done this will define:
6263
6264
6265                MOTIF_FOUND        - system has MOTIF
6266                MOTIF_INCLUDE_DIR  - include paths to use Motif
6267                MOTIF_LIBRARIES    - Link these to use Motif
6268
6269
6270       FindOpenAL
6271
6272
6273              Locate  OpenAL  This module defines OPENAL_LIBRARY OPENAL_FOUND,
6274              if false, do not try to link to OpenAL OPENAL_INCLUDE_DIR, where
6275              to find the headers
6276
6277
6278              $OPENALDIR  is  an environment variable that would correspond to
6279              the ./configure --prefix=$OPENALDIR used in building OpenAL.
6280
6281
6282              Created by Eric Wing. This was influenced by  the  FindSDL.cmake
6283              module.
6284
6285
6286       FindOpenGL
6287              Try to find OpenGL
6288
6289              Once done this will define
6290
6291
6292                OPENGL_FOUND        - system has OpenGL
6293                OPENGL_XMESA_FOUND  - system has XMESA
6294                OPENGL_GLU_FOUND    - system has GLU
6295                OPENGL_INCLUDE_DIR  - the GL include directory
6296                OPENGL_LIBRARIES    - Link these to use OpenGL and GLU
6297
6298
6299
6300
6301              If you want to use just GL you can use these values
6302
6303
6304                OPENGL_gl_LIBRARY   - Path to OpenGL Library
6305                OPENGL_glu_LIBRARY  - Path to GLU Library
6306
6307
6308
6309
6310              On  OSX  default to using the framework version of opengl People
6311              will have to change the cache values of  OPENGL_glu_LIBRARY  and
6312              OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
6313
6314
6315       FindOpenMP
6316              Finds OpenMP support
6317
6318              This  module can be used to detect OpenMP support in a compiler.
6319              If the compiler supports OpenMP, the flags required  to  compile
6320              with  OpenMP support are returned in variables for the different
6321              languages. The variables may be empty if the compiler  does  not
6322              need a special flag to support OpenMP.
6323
6324
6325              The following variables are set:
6326
6327
6328                 OpenMP_C_FLAGS - flags to add to the C compiler for OpenMP support
6329                 OpenMP_CXX_FLAGS - flags to add to the CXX compiler for OpenMP support
6330                 OPENMP_FOUND - true if openmp is detected
6331
6332
6333
6334
6335              Supported       compilers       can       be       found      at
6336              http://openmp.org/wp/openmp-compilers/
6337
6338
6339       FindOpenSSL
6340              Try to find the OpenSSL encryption library
6341
6342              Once done this will define
6343
6344
6345                OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
6346
6347
6348
6349
6350              Read-Only variables:
6351
6352
6353                OPENSSL_FOUND - system has the OpenSSL library
6354                OPENSSL_INCLUDE_DIR - the OpenSSL include directory
6355                OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
6356                OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
6357
6358
6359       FindOpenSceneGraph
6360              Find OpenSceneGraph
6361
6362              This module searches for the OpenSceneGraph core  "osg"  library
6363              as  well  as  OpenThreads,  and  whatever  additional COMPONENTS
6364              (nodekits) that you specify.
6365
6366
6367                  See http://www.openscenegraph.org
6368
6369
6370
6371
6372              NOTE: To use this module effectively  you  must  either  require
6373              CMake  >=  2.6.3  with  cmake_minimum_required(VERSION 2.6.3) or
6374              download   and   place   FindOpenThreads.cmake,    Findosg_func‐
6375              tions.cmake,  Findosg.cmake, and Find<etc>.cmake files into your
6376              CMAKE_MODULE_PATH.
6377
6378
6379              ==================================
6380
6381
6382              This module accepts the following variables (note mixed case)
6383
6384
6385                  OpenSceneGraph_DEBUG - Enable debugging output
6386
6387
6388
6389
6390                  OpenSceneGraph_MARK_AS_ADVANCED - Mark cache variables as advanced
6391                                                    automatically
6392
6393
6394
6395
6396              The following environment variables are also respected for find‐
6397              ing  the OSG and it's various components.  CMAKE_PREFIX_PATH can
6398              also be used for this (see find_library() CMake documentation).
6399
6400
6401                  <MODULE>_DIR (where MODULE is of the form "OSGVOLUME" and there is a FindosgVolume.cmake file)
6402                  OSG_DIR
6403                  OSGDIR
6404                  OSG_ROOT
6405
6406
6407
6408
6409              [CMake 2.8.10]: The CMake variable OSG_DIR can now  be  used  as
6410              well  to  influence  detection, instead of needing to specify an
6411              environment variable.
6412
6413
6414              This module defines the following output variables:
6415
6416
6417                  OPENSCENEGRAPH_FOUND - Was the OSG and all of the specified components found?
6418
6419
6420
6421
6422                  OPENSCENEGRAPH_VERSION - The version of the OSG which was found
6423
6424
6425
6426
6427                  OPENSCENEGRAPH_INCLUDE_DIRS - Where to find the headers
6428
6429
6430
6431
6432                  OPENSCENEGRAPH_LIBRARIES - The OSG libraries
6433
6434
6435
6436
6437              ================================== Example Usage:
6438
6439
6440                find_package(OpenSceneGraph 2.0.0 REQUIRED osgDB osgUtil)
6441                    # libOpenThreads & libosg automatically searched
6442                include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
6443
6444
6445
6446
6447                add_executable(foo foo.cc)
6448                target_link_libraries(foo ${OPENSCENEGRAPH_LIBRARIES})
6449
6450
6451
6452
6453
6454       FindOpenThreads
6455
6456
6457              OpenThreads is a C++ based threading library. Its largest  user‐
6458              base seems to OpenSceneGraph so you might notice I accept OSGDIR
6459              as an environment path. I consider this  part  of  the  Findosg*
6460              suite  used to find OpenSceneGraph components. Each component is
6461              separate and you must opt in to each module.
6462
6463
6464              Locate  OpenThreads  This  module  defines   OPENTHREADS_LIBRARY
6465              OPENTHREADS_FOUND,  if  false, do not try to link to OpenThreads
6466              OPENTHREADS_INCLUDE_DIR, where to find the headers
6467
6468
6469              $OPENTHREADS_DIR is an environment variable  that  would  corre‐
6470              spond  to  the  ./configure  --prefix=$OPENTHREADS_DIR  used  in
6471              building osg.
6472
6473
6474              [CMake 2.8.10]: The CMake variables OPENTHREADS_DIR  or  OSG_DIR
6475              can now be used as well to influence detection, instead of need‐
6476              ing to specify an environment variable.
6477
6478
6479              Created by Eric Wing.
6480
6481
6482       FindPHP4
6483              Find PHP4
6484
6485              This module finds if PHP4 is installed and determines where  the
6486              include  files  and  libraries  are. It also determines what the
6487              name of the library is. This code sets the following variables:
6488
6489
6490                PHP4_INCLUDE_PATH       = path to where php.h can be found
6491                PHP4_EXECUTABLE         = full path to the php4 binary
6492
6493
6494
6495
6496
6497       FindPNG
6498              Find the native PNG includes and library
6499
6500
6501
6502
6503              This module searches libpng, the library for  working  with  PNG
6504              images.
6505
6506
6507              It defines the following variables
6508
6509
6510                PNG_INCLUDE_DIRS, where to find png.h, etc.
6511                PNG_LIBRARIES, the libraries to link against to use PNG.
6512                PNG_DEFINITIONS - You should add_definitons(${PNG_DEFINITIONS}) before compiling code that includes png library files.
6513                PNG_FOUND, If false, do not try to use PNG.
6514                PNG_VERSION_STRING - the version of the PNG library found (since CMake 2.8.8)
6515
6516              Also defined, but not for general use are
6517
6518
6519                PNG_LIBRARY, where to find the PNG library.
6520
6521              For  backward  compatiblity the variable PNG_INCLUDE_DIR is also
6522              set. It has the same value as PNG_INCLUDE_DIRS.
6523
6524
6525              Since PNG depends on the ZLib compression library, none  of  the
6526              above will be defined unless ZLib can be found.
6527
6528
6529       FindPackageHandleStandardArgs
6530
6531
6532              FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> ... )
6533
6534
6535              This  function  is  intended to be used in FindXXX.cmake modules
6536              files. It handles the REQUIRED, QUIET and version-related  argu‐
6537              ments  to  find_package().  It also sets the <packagename>_FOUND
6538              variable. The package  is  considered  found  if  all  variables
6539              <var1>... listed contain valid results, e.g. valid filepaths.
6540
6541
6542              There are two modes of this function. The first argument in both
6543              modes is the name of the Find-module  where  it  is  called  (in
6544              original casing).
6545
6546
6547              The first simple mode looks like this:
6548
6549
6550                  FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> (DEFAULT_MSG|"Custom failure message") <var1>...<varN> )
6551
6552              If  the  variables  <var1> to <varN> are all valid, then <UPPER‐
6553              CASED_NAME>_FOUND will be set to TRUE. If DEFAULT_MSG  is  given
6554              as  second argument, then the function will generate itself use‐
6555              ful success and error messages. You can  also  supply  a  custom
6556              error message for the failure case. This is not recommended.
6557
6558
6559              The  second  mode  is  more  powerful  and also supports version
6560              checking:
6561
6562
6563                  FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [FOUND_VAR <resultVar>]
6564                                                         [REQUIRED_VARS <var1>...<varN>]
6565                                                         [VERSION_VAR   <versionvar>]
6566                                                         [HANDLE_COMPONENTS]
6567                                                         [CONFIG_MODE]
6568                                                         [FAIL_MESSAGE "Custom failure message"] )
6569
6570
6571
6572
6573              In this mode, the name of the result-variable can be set  either
6574              to  either  <UPPERCASED_NAME>_FOUND or <OriginalCase_Name>_FOUND
6575              using the FOUND_VAR option. Other names for the  result-variable
6576              are  not  allowed.  So for a Find-module named FindFooBar.cmake,
6577              the two possible names are FooBar_FOUND and FOOBAR_FOUND. It  is
6578              recommended  to  use the original case version. If the FOUND_VAR
6579              option is not used, the default is <UPPERCASED_NAME>_FOUND.
6580
6581
6582              As in the simple mode, if <var1> through <varN> are  all  valid,
6583              <packagename>_FOUND will be set to TRUE. After REQUIRED_VARS the
6584              variables which are required for this package are  listed.  Fol‐
6585              lowing  VERSION_VAR  the  name  of the variable can be specified
6586              which holds the version of the package which has been found.  If
6587              this  is  done, this version will be checked against the (poten‐
6588              tially) specified required version used  in  the  find_package()
6589              call.  The  EXACT  keyword is also handled. The default messages
6590              include information about the required version and  the  version
6591              which has been actually found, both if the version is ok or not.
6592              If the package supports components,  use  the  HANDLE_COMPONENTS
6593              option  to enable handling them. In this case, find_package_han‐
6594              dle_standard_args() will report which components have been found
6595              and which are missing, and the <packagename>_FOUND variable will
6596              be set to FALSE if any of the required components (i.e. not  the
6597              ones  listed  after  OPTIONAL_COMPONENTS)  are  missing. Use the
6598              option CONFIG_MODE if your FindXXX.cmake module is a wrapper for
6599              a  find_package(...  NO_MODULE)  call.  In this case VERSION_VAR
6600              will be set to <NAME>_VERSION and the macro  will  automatically
6601              check  whether  the  Config module was found. Via FAIL_MESSAGE a
6602              custom failure message can be specified, if this  is  not  used,
6603              the default message will be displayed.
6604
6605
6606              Example for mode 1:
6607
6608
6609                  find_package_handle_standard_args(LibXml2  DEFAULT_MSG  LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
6610
6611
6612
6613
6614              LibXml2  is  considered to be found, if both LIBXML2_LIBRARY and
6615              LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to
6616              TRUE.  If  it  is not found and REQUIRED was used, it fails with
6617              FATAL_ERROR, independent whether QUIET was used or not. If it is
6618              found,  success  will  be  reported,  including  the  content of
6619              <var1>. On repeated  Cmake  runs,  the  same  message  won't  be
6620              printed again.
6621
6622
6623              Example for mode 2:
6624
6625
6626                  find_package_handle_standard_args(LibXslt FOUND_VAR LibXslt_FOUND
6627                                                           REQUIRED_VARS LibXslt_LIBRARIES LibXslt_INCLUDE_DIRS
6628                                                           VERSION_VAR LibXslt_VERSION_STRING)
6629
6630              In  this  case,  LibXslt  is considered to be found if the vari‐
6631              able(s)  listed  after  REQUIRED_VAR   are   all   valid,   i.e.
6632              LibXslt_LIBRARIES  and  LibXslt_INCLUDE_DIRS  in  this case. The
6633              result will then be stored in LibXslt_FOUND . Also  the  version
6634              of  LibXslt  will  be  checked by using the version contained in
6635              LibXslt_VERSION_STRING. Since  no  FAIL_MESSAGE  is  given,  the
6636              default messages will be printed.
6637
6638
6639              Another example for mode 2:
6640
6641
6642                  find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
6643                  find_package_handle_standard_args(Automoc4  CONFIG_MODE)
6644
6645              In  this  case,  FindAutmoc4.cmake  wraps  a  call to find_pack‐
6646              age(Automoc4 NO_MODULE) and adds an additional search  directory
6647              for  automoc4. Here the result will be stored in AUTOMOC4_FOUND.
6648              The following FIND_PACKAGE_HANDLE_STANDARD_ARGS() call  produces
6649              a proper success/error message.
6650
6651
6652       FindPackageMessage
6653
6654
6655              FIND_PACKAGE_MESSAGE(<name>  "message  for  user"  "find  result
6656              details")
6657
6658
6659              This macro is intended  to  be  used  in  FindXXX.cmake  modules
6660              files. It will print a message once for each unique find result.
6661              This is useful for telling the user where a package  was  found.
6662              The  first argument specifies the name (XXX) of the package. The
6663              second argument specifies the  message  to  display.  The  third
6664              argument  lists  details  about  the find result so that if they
6665              change the message will be displayed again. The macro also obeys
6666              the QUIET argument to the find_package command.
6667
6668
6669              Example:
6670
6671
6672                if(X11_FOUND)
6673                  FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}"
6674                    "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
6675                else()
6676                 ...
6677                endif()
6678
6679
6680       FindPerl
6681              Find perl
6682
6683              this module looks for Perl
6684
6685
6686                PERL_EXECUTABLE     - the full path to perl
6687                PERL_FOUND          - If false, don't attempt to use perl.
6688                PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
6689
6690
6691       FindPerlLibs
6692              Find Perl libraries
6693
6694              This  module finds if PERL is installed and determines where the
6695              include files and libraries are. It  also  determines  what  the
6696              name of the library is. This code sets the following variables:
6697
6698
6699                PERLLIBS_FOUND    = True if perl.h & libperl were found
6700                PERL_INCLUDE_PATH = path to where perl.h is found
6701                PERL_LIBRARY      = path to libperl
6702                PERL_EXECUTABLE   = full path to the perl binary
6703
6704
6705
6706
6707              The  minimum required version of Perl can be specified using the
6708              standard syntax, e.g. find_package(PerlLibs 6.0)
6709
6710
6711                The following variables are also available if needed
6712                (introduced after CMake 2.6.4)
6713
6714
6715
6716
6717                PERL_SITESEARCH    = path to the sitesearch install dir
6718                PERL_SITELIB       = path to the sitelib install directory
6719                PERL_VENDORARCH    = path to the vendor arch install directory
6720                PERL_VENDORLIB     = path to the vendor lib install directory
6721                PERL_ARCHLIB       = path to the arch lib install directory
6722                PERL_PRIVLIB       = path to the priv lib install directory
6723                PERL_EXTRA_C_FLAGS = Compilation flags used to build perl
6724
6725
6726
6727
6728
6729       FindPhysFS
6730
6731
6732              Locate PhysFS library This module  defines  PHYSFS_LIBRARY,  the
6733              name  of  the library to link against PHYSFS_FOUND, if false, do
6734              not try to link to  PHYSFS  PHYSFS_INCLUDE_DIR,  where  to  find
6735              physfs.h
6736
6737
6738              $PHYSFSDIR  is  an environment variable that would correspond to
6739              the ./configure --prefix=$PHYSFSDIR used in building PHYSFS.
6740
6741
6742              Created by Eric Wing.
6743
6744
6745       FindPike
6746              Find Pike
6747
6748              This module finds if PIKE is installed and determines where  the
6749              include  files  and  libraries  are. It also determines what the
6750              name of the library is. This code sets the following variables:
6751
6752
6753                PIKE_INCLUDE_PATH       = path to where program.h is found
6754                PIKE_EXECUTABLE         = full path to the pike binary
6755
6756
6757
6758
6759
6760       FindPkgConfig
6761              a pkg-config module for CMake
6762
6763
6764
6765
6766              Usage:
6767
6768
6769                 pkg_check_modules(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
6770                   checks for all the given modules
6771
6772
6773
6774
6775                 pkg_search_module(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
6776                   checks for given modules and uses the first working one
6777
6778
6779
6780
6781              When the 'REQUIRED' argument was set, macros will fail  with  an
6782              error when module(s) could not be found
6783
6784
6785              When  the  'QUIET'  argument  is set, no status messages will be
6786              printed.
6787
6788
6789              It sets the following variables:
6790
6791
6792                 PKG_CONFIG_FOUND          ... if pkg-config executable was found
6793                 PKG_CONFIG_EXECUTABLE     ... pathname of the pkg-config program
6794                 PKG_CONFIG_VERSION_STRING ... the version of the pkg-config program found
6795                                               (since CMake 2.8.8)
6796
6797
6798
6799
6800              For the following variables two sets of values exist; first  one
6801              is  the common one and has the given PREFIX. The second set con‐
6802              tains flags which are given out when pkgconfig was  called  with
6803              the '--static' option.
6804
6805
6806                 <XPREFIX>_FOUND          ... set to 1 if module(s) exist
6807                 <XPREFIX>_LIBRARIES      ... only the libraries (w/o the '-l')
6808                 <XPREFIX>_LIBRARY_DIRS   ... the paths of the libraries (w/o the '-L')
6809                 <XPREFIX>_LDFLAGS        ... all required linker flags
6810                 <XPREFIX>_LDFLAGS_OTHER  ... all other linker flags
6811                 <XPREFIX>_INCLUDE_DIRS   ... the '-I' preprocessor flags (w/o the '-I')
6812                 <XPREFIX>_CFLAGS         ... all required cflags
6813                 <XPREFIX>_CFLAGS_OTHER   ... the other compiler flags
6814
6815
6816
6817
6818                 <XPREFIX> = <PREFIX>        for common case
6819                 <XPREFIX> = <PREFIX>_STATIC for static linking
6820
6821
6822
6823
6824              There  are  some  special  variables whose prefix depends on the
6825              count of given modules. When there is only one module,  <PREFIX>
6826              stays  unchanged.  When  there  are multiple modules, the prefix
6827              will be changed to <PREFIX>_<MODNAME>:
6828
6829
6830                 <XPREFIX>_VERSION    ... version of the module
6831                 <XPREFIX>_PREFIX     ... prefix-directory of the module
6832                 <XPREFIX>_INCLUDEDIR ... include-dir of the module
6833                 <XPREFIX>_LIBDIR     ... lib-dir of the module
6834
6835
6836
6837
6838                 <XPREFIX> = <PREFIX>  when |MODULES| == 1, else
6839                 <XPREFIX> = <PREFIX>_<MODNAME>
6840
6841
6842
6843
6844              A <MODULE> parameter can have the following formats:
6845
6846
6847                 {MODNAME}            ... matches any version
6848                 {MODNAME}>={VERSION} ... at least version <VERSION> is required
6849                 {MODNAME}={VERSION}  ... exactly version <VERSION> is required
6850                 {MODNAME}<={VERSION} ... modules must not be newer than <VERSION>
6851
6852
6853
6854
6855              Examples
6856
6857
6858                 pkg_check_modules (GLIB2   glib-2.0)
6859
6860
6861
6862
6863                 pkg_check_modules (GLIB2   glib-2.0>=2.10)
6864                   requires at least version 2.10 of glib2 and defines e.g.
6865                     GLIB2_VERSION=2.10.3
6866
6867
6868
6869
6870                 pkg_check_modules (FOO     glib-2.0>=2.10 gtk+-2.0)
6871                   requires both glib2 and gtk2, and defines e.g.
6872                     FOO_glib-2.0_VERSION=2.10.3
6873                     FOO_gtk+-2.0_VERSION=2.8.20
6874
6875
6876
6877
6878                 pkg_check_modules (XRENDER REQUIRED xrender)
6879                   defines e.g.:
6880                     XRENDER_LIBRARIES=Xrender;X11
6881                     XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
6882
6883
6884
6885
6886                 pkg_search_module (BAR     libxml-2.0 libxml2 libxml>=2)
6887
6888
6889       FindPostgreSQL
6890              Find the PostgreSQL installation.
6891
6892              In Windows, we make the assumption that, if the PostgreSQL files
6893              are   installed,   the  default  directory  will  be  C:\Program
6894              Files\PostgreSQL.
6895
6896
6897              This module defines
6898
6899
6900                PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking
6901                PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers
6902                PostgreSQL_VERSION_STRING - the version of PostgreSQL found (since CMake 2.8.8)
6903
6904
6905       FindProducer
6906
6907
6908              Though Producer isn't directly part of OpenSceneGraph, its  pri‐
6909              mary  user  is OSG so I consider this part of the Findosg* suite
6910              used to find OpenSceneGraph components.  You'll  notice  that  I
6911              accept OSGDIR as an environment path.
6912
6913
6914              Each  component  is separate and you must opt in to each module.
6915              You must also opt into OpenGL (and OpenThreads?) as  these  mod‐
6916              ules won't do it for you. This is to allow you control over your
6917              own system piece by piece in case you need to opt out of certain
6918              components  or  change the Find behavior for a particular module
6919              (perhaps because the  default  FindOpenGL.cmake  module  doesn't
6920              work  with your system as an example). If you want to use a more
6921              convenient module that includes everything,  use  the  FindOpen‐
6922              SceneGraph.cmake instead of the Findosg*.cmake modules.
6923
6924
6925              Locate   Producer  This  module  defines  PRODUCER_LIBRARY  PRO‐
6926              DUCER_FOUND, if false, do not  try  to  link  to  Producer  PRO‐
6927              DUCER_INCLUDE_DIR, where to find the headers
6928
6929
6930              $PRODUCER_DIR  is  an environment variable that would correspond
6931              to the ./configure --prefix=$PRODUCER_DIR used in building osg.
6932
6933
6934              Created by Eric Wing.
6935
6936
6937       FindProtobuf
6938
6939
6940              Locate and configure the Google Protocol Buffers library.
6941
6942
6943              The following variables can be set and are optional:
6944
6945
6946                 PROTOBUF_SRC_ROOT_FOLDER - When compiling with MSVC, if this cache variable is set
6947                                            the protobuf-default VS project build locations
6948                                            (vsprojects/Debug & vsprojects/Release) will be searched
6949                                            for libraries and binaries.
6950
6951
6952
6953
6954                 PROTOBUF_IMPORT_DIRS     - List of additional directories to be searched for
6955                                            imported .proto files. (New in CMake 2.8.8)
6956
6957
6958
6959
6960              Defines the following variables:
6961
6962
6963                 PROTOBUF_FOUND - Found the Google Protocol Buffers library (libprotobuf & header files)
6964                 PROTOBUF_INCLUDE_DIRS - Include directories for Google Protocol Buffers
6965                 PROTOBUF_LIBRARIES - The protobuf libraries
6966
6967              [New in CMake 2.8.5]
6968
6969
6970                 PROTOBUF_PROTOC_LIBRARIES - The protoc libraries
6971                 PROTOBUF_LITE_LIBRARIES - The protobuf-lite libraries
6972
6973
6974
6975
6976              The following cache variables are also available to set or use:
6977
6978
6979                 PROTOBUF_LIBRARY - The protobuf library
6980                 PROTOBUF_PROTOC_LIBRARY   - The protoc library
6981                 PROTOBUF_INCLUDE_DIR - The include directory for protocol buffers
6982                 PROTOBUF_PROTOC_EXECUTABLE - The protoc compiler
6983
6984              [New in CMake 2.8.5]
6985
6986
6987                 PROTOBUF_LIBRARY_DEBUG - The protobuf library (debug)
6988                 PROTOBUF_PROTOC_LIBRARY_DEBUG   - The protoc library (debug)
6989                 PROTOBUF_LITE_LIBRARY - The protobuf lite library
6990                 PROTOBUF_LITE_LIBRARY_DEBUG - The protobuf lite library (debug)
6991
6992
6993
6994
6995                ====================================================================
6996                Example:
6997
6998
6999
7000
7001                 find_package(Protobuf REQUIRED)
7002                 include_directories(${PROTOBUF_INCLUDE_DIRS})
7003
7004
7005
7006
7007                 include_directories(${CMAKE_CURRENT_BINARY_DIR})
7008                 PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS foo.proto)
7009                 add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
7010                 target_link_libraries(bar ${PROTOBUF_LIBRARIES})
7011
7012
7013
7014
7015              NOTE: You may need to link against pthreads, depending
7016
7017
7018                     on the platform.
7019
7020
7021
7022
7023              NOTE: The  PROTOBUF_GENERATE_CPP  macro  &  add_executable()  or
7024              add_library()
7025
7026
7027                     calls only work properly within the same directory.
7028
7029
7030
7031
7032                ====================================================================
7033
7034
7035
7036
7037              PROTOBUF_GENERATE_CPP (public function)
7038
7039
7040                 SRCS = Variable to define with autogenerated
7041                        source files
7042                 HDRS = Variable to define with autogenerated
7043                        header files
7044                 ARGN = proto files
7045
7046
7047
7048
7049                ====================================================================
7050
7051
7052       FindPythonInterp
7053              Find python interpreter
7054
7055              This  module finds if Python interpreter is installed and deter‐
7056              mines where the executables are. This code  sets  the  following
7057              variables:
7058
7059
7060                PYTHONINTERP_FOUND         - Was the Python executable found
7061                PYTHON_EXECUTABLE          - path to the Python interpreter
7062
7063
7064
7065
7066                PYTHON_VERSION_STRING      - Python version found e.g. 2.5.2
7067                PYTHON_VERSION_MAJOR       - Python major version found e.g. 2
7068                PYTHON_VERSION_MINOR       - Python minor version found e.g. 5
7069                PYTHON_VERSION_PATCH       - Python patch version found e.g. 2
7070
7071
7072
7073
7074              The Python_ADDITIONAL_VERSIONS variable can be used to specify a
7075              list of version numbers that should be taken into  account  when
7076              searching for Python. You need to set this variable before call‐
7077              ing find_package(PythonInterp).
7078
7079
7080       FindPythonLibs
7081              Find python libraries
7082
7083              This module finds if Python is installed  and  determines  where
7084              the include files and libraries are. It also determines what the
7085              name of the library is. This code sets the following variables:
7086
7087
7088                PYTHONLIBS_FOUND           - have the Python libs been found
7089                PYTHON_LIBRARIES           - path to the python library
7090                PYTHON_INCLUDE_PATH        - path to where Python.h is found (deprecated)
7091                PYTHON_INCLUDE_DIRS        - path to where Python.h is found
7092                PYTHON_DEBUG_LIBRARIES     - path to the debug library (deprecated)
7093                PYTHONLIBS_VERSION_STRING  - version of the Python libs found (since CMake 2.8.8)
7094
7095
7096
7097
7098              The Python_ADDITIONAL_VERSIONS variable can be used to specify a
7099              list  of  version numbers that should be taken into account when
7100              searching for Python. You need to set this variable before call‐
7101              ing find_package(PythonLibs).
7102
7103
7104              If  you'd like to specify the installation of Python to use, you
7105              should modify the following cache variables:
7106
7107
7108                PYTHON_LIBRARY             - path to the python library
7109                PYTHON_INCLUDE_DIR         - path to where Python.h is found
7110
7111
7112       FindQt Searches for all installed versions of Qt.
7113
7114              This should only be used if your project can work with  multiple
7115              versions of Qt.  If not, you should just directly use FindQt4 or
7116              FindQt3. If multiple versions of Qt are found  on  the  machine,
7117              then The user must set the option DESIRED_QT_VERSION to the ver‐
7118              sion they want to use.  If only one version of qt  is  found  on
7119              the  machine, then the DESIRED_QT_VERSION is set to that version
7120              and the matching FindQt3 or FindQt4 module is included. Once the
7121              user sets DESIRED_QT_VERSION, then the FindQt3 or FindQt4 module
7122              is included.
7123
7124
7125                QT_REQUIRED if this is set to TRUE then if CMake can
7126                            not find Qt4 or Qt3 an error is raised
7127                            and a message is sent to the user.
7128
7129
7130
7131
7132                DESIRED_QT_VERSION OPTION is created
7133                QT4_INSTALLED is set to TRUE if qt4 is found.
7134                QT3_INSTALLED is set to TRUE if qt3 is found.
7135
7136
7137       FindQt3
7138              Locate Qt include paths and libraries
7139
7140              This module defines:
7141
7142
7143                QT_INCLUDE_DIR    - where to find qt.h, etc.
7144                QT_LIBRARIES      - the libraries to link against to use Qt.
7145                QT_DEFINITIONS    - definitions to use when
7146                                    compiling code that uses Qt.
7147                QT_FOUND          - If false, don't try to use Qt.
7148                QT_VERSION_STRING - the version of Qt found
7149
7150
7151
7152
7153              If you need the multithreaded version of Qt, set  QT_MT_REQUIRED
7154              to TRUE
7155
7156
7157              Also defined, but not for general use are:
7158
7159
7160                QT_MOC_EXECUTABLE, where to find the moc tool.
7161                QT_UIC_EXECUTABLE, where to find the uic tool.
7162                QT_QT_LIBRARY, where to find the Qt library.
7163                QT_QTMAIN_LIBRARY, where to find the qtmain
7164                 library. This is only required by Qt3 on Windows.
7165
7166
7167       FindQt4
7168              Find Qt 4
7169
7170              This module can be used to find Qt4. The most important issue is
7171              that the Qt4 qmake is available via the system path. This  qmake
7172              is  then  used  to detect basically everything else. This module
7173              defines a number of  key  variables  and  macros.  The  variable
7174              QT_USE_FILE is set which is the path to a CMake file that can be
7175              included to compile Qt 4 applications and libraries.  It sets up
7176              the  compilation environment for include directories, preproces‐
7177              sor defines and populates a QT_LIBRARIES variable.
7178
7179
7180              Typical usage could be something like:
7181
7182
7183                 find_package(Qt4 4.4.3 REQUIRED QtCore QtGui QtXml)
7184                 include(${QT_USE_FILE})
7185                 add_executable(myexe main.cpp)
7186                 target_link_libraries(myexe ${QT_LIBRARIES})
7187
7188
7189
7190
7191              The minimum required version can be specified using the standard
7192              find_package()-syntax  (see  example  above).  For compatibility
7193              with older versions of FindQt4.cmake it is also possible to  set
7194              the  variable  QT_MIN_VERSION to the minimum required version of
7195              Qt4 before the find_package(Qt4) command. If both are used,  the
7196              version  used  in  the  find_package() command overrides the one
7197              from QT_MIN_VERSION.
7198
7199
7200              When using the components  argument,  QT_USE_QT*  variables  are
7201              automatically set for the QT_USE_FILE to pick up.  If one wishes
7202              to manually set them, the available ones to set include:
7203
7204
7205                                  QT_DONT_USE_QTCORE
7206                                  QT_DONT_USE_QTGUI
7207                                  QT_USE_QT3SUPPORT
7208                                  QT_USE_QTASSISTANT
7209                                  QT_USE_QAXCONTAINER
7210                                  QT_USE_QAXSERVER
7211                                  QT_USE_QTDESIGNER
7212                                  QT_USE_QTMOTIF
7213                                  QT_USE_QTMAIN
7214                                  QT_USE_QTMULTIMEDIA
7215                                  QT_USE_QTNETWORK
7216                                  QT_USE_QTNSPLUGIN
7217                                  QT_USE_QTOPENGL
7218                                  QT_USE_QTSQL
7219                                  QT_USE_QTXML
7220                                  QT_USE_QTSVG
7221                                  QT_USE_QTTEST
7222                                  QT_USE_QTUITOOLS
7223                                  QT_USE_QTDBUS
7224                                  QT_USE_QTSCRIPT
7225                                  QT_USE_QTASSISTANTCLIENT
7226                                  QT_USE_QTHELP
7227                                  QT_USE_QTWEBKIT
7228                                  QT_USE_QTXMLPATTERNS
7229                                  QT_USE_PHONON
7230                                  QT_USE_QTSCRIPTTOOLS
7231                                  QT_USE_QTDECLARATIVE
7232
7233
7234
7235
7236                QT_USE_IMPORTED_TARGETS
7237                      If this variable is set to TRUE, FindQt4.cmake will create imported
7238                      library targets for the various Qt libraries and set the
7239                      library variables like QT_QTCORE_LIBRARY to point at these imported
7240                      targets instead of the library file on disk. This provides much better
7241                      handling of the release and debug versions of the Qt libraries and is
7242                     also always backwards compatible, except for the case that dependencies
7243                     of libraries are exported, these will then also list the names of the
7244                     imported targets as dependency and not the file location on disk. This
7245                     is much more flexible, but requires that FindQt4.cmake is executed before
7246                     such an exported dependency file is processed.
7247
7248
7249
7250
7251                     Note that if using IMPORTED targets, the qtmain.lib static library is
7252                     automatically linked on Windows. To disable that globally, set the
7253                     QT4_NO_LINK_QTMAIN variable before finding Qt4. To disable that for a
7254                     particular executable, set the QT4_NO_LINK_QTMAIN target property to
7255                     True on the executable.
7256
7257
7258
7259
7260                QT_INCLUDE_DIRS_NO_SYSTEM
7261                      If this variable is set to TRUE, the Qt include directories
7262                      in the QT_USE_FILE will NOT have the SYSTEM keyword set.
7263
7264
7265
7266
7267              There are also some files that need processing by some Qt  tools
7268              such  as  moc and uic.  Listed below are macros that may be used
7269              to process those files.
7270
7271
7272                macro QT4_WRAP_CPP(outfiles inputfile ... OPTIONS ...)
7273                      create moc code from a list of files containing Qt class with
7274                      the Q_OBJECT declaration.  Per-directory preprocessor definitions
7275                      are also added.  Options may be given to moc, such as those found
7276                      when executing "moc -help".
7277
7278
7279
7280
7281                macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)
7282                      create code from a list of Qt designer ui files.
7283                      Options may be given to uic, such as those found
7284                      when executing "uic -help"
7285
7286
7287
7288
7289                macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)
7290                      create code from a list of Qt resource files.
7291                      Options may be given to rcc, such as those found
7292                      when executing "rcc -help"
7293
7294
7295
7296
7297                macro QT4_GENERATE_MOC(inputfile outputfile )
7298                      creates a rule to run moc on infile and create outfile.
7299                      Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.
7300                      because you need a custom filename for the moc file or something similar.
7301
7302
7303
7304
7305                macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... )
7306                      The qt4_automoc macro is obsolete.  Use the CMAKE_AUTOMOC feature instead.
7307                      This macro is still experimental.
7308                      It can be used to have moc automatically handled.
7309                      So if you have the files foo.h and foo.cpp, and in foo.h a
7310                      a class uses the Q_OBJECT macro, moc has to run on it. If you don't
7311                      want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert
7312                      #include "foo.moc"
7313                      in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will the
7314                      scan all listed files at cmake-time for such included moc files and if it finds
7315                      them cause a rule to be generated to run moc at build time on the
7316                      accompanying header file foo.h.
7317                      If a source file has the SKIP_AUTOMOC property set it will be ignored by this macro.
7318
7319
7320
7321
7322                      You should have a look on the AUTOMOC property for targets to achieve the same results.
7323
7324
7325
7326
7327                macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)
7328                      Create the interface header and implementation files with the
7329                      given basename from the given interface xml file and add it to
7330                      the list of sources.
7331
7332
7333
7334
7335                      You can pass additional parameters to the qdbusxml2cpp call by setting
7336                      properties on the input file:
7337
7338
7339
7340
7341                      INCLUDE the given file will be included in the generate interface header
7342
7343
7344
7345
7346                      CLASSNAME the generated class is named accordingly
7347
7348
7349
7350
7351                      NO_NAMESPACE the generated class is not wrapped in a namespace
7352
7353
7354
7355
7356                macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )
7357                      Create the interface header and implementation files
7358                      for all listed interface xml files.
7359                      The basename will be automatically determined from the name of the xml file.
7360
7361
7362
7363
7364                      The source file properties described for QT4_ADD_DBUS_INTERFACE also apply here.
7365
7366
7367
7368
7369                macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname [basename] [classname])
7370                      create a dbus adaptor (header and implementation file) from the xml file
7371                      describing the interface, and add it to the list of sources. The adaptor
7372                      forwards the calls to a parent class, defined in parentheader and named
7373                      parentclassname. The name of the generated files will be
7374                      <basename>adaptor.{cpp,h} where basename defaults to the basename of the xml file.
7375                      If <classname> is provided, then it will be used as the classname of the
7376                      adaptor itself.
7377
7378
7379
7380
7381                macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...)
7382                      generate the xml interface file from the given header.
7383                      If the optional argument interfacename is omitted, the name of the
7384                      interface file is constructed from the basename of the header with
7385                      the suffix .xml appended.
7386                      Options may be given to qdbuscpp2xml, such as those found when executing "qdbuscpp2xml --help"
7387
7388
7389
7390
7391                macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ...
7392                                              ts_files ... OPTIONS ...)
7393                      out: qm_files
7394                      in:  directories sources ts_files
7395                      options: flags to pass to lupdate, such as -extensions to specify
7396                      extensions for a directory scan.
7397                      generates commands to create .ts (vie lupdate) and .qm
7398                      (via lrelease) - files from directories and/or sources. The ts files are
7399                      created and/or updated in the source tree (unless given with full paths).
7400                      The qm files are generated in the build tree.
7401                      Updating the translations can be done by adding the qm_files
7402                      to the source list of your library/executable, so they are
7403                      always updated, or by adding a custom target to control when
7404                      they get updated/generated.
7405
7406
7407
7408
7409                macro QT4_ADD_TRANSLATION( qm_files ts_files ... )
7410                      out: qm_files
7411                      in:  ts_files
7412                      generates commands to create .qm from .ts - files. The generated
7413                      filenames can be found in qm_files. The ts_files
7414                      must exist and are not updated in any way.
7415
7416
7417
7418
7419              function QT4_USE_MODULES( target [link_type] modules...)
7420
7421
7422                      This function is obsolete. Use target_link_libraries with IMPORTED targets instead.
7423                      Make <target> use the <modules> from Qt. Using a Qt module means
7424                      to link to the library, add the relevant include directories for the module,
7425                      and add the relevant compiler defines for using the module.
7426                      Modules are roughly equivalent to components of Qt4, so usage would be
7427                      something like:
7428                       qt4_use_modules(myexe Core Gui Declarative)
7429                      to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument can
7430                      be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the same argument
7431                      to the target_link_libraries call.
7432
7433
7434
7435
7436
7437
7438
7439                Below is a detailed list of variables that FindQt4.cmake sets.
7440                QT_FOUND         If false, don't try to use Qt.
7441                Qt4_FOUND        If false, don't try to use Qt 4.
7442                QT4_FOUND        If false, don't try to use Qt 4. This variable is for compatibility only.
7443
7444
7445
7446
7447                QT_VERSION_MAJOR The major version of Qt found.
7448                QT_VERSION_MINOR The minor version of Qt found.
7449                QT_VERSION_PATCH The patch version of Qt found.
7450
7451
7452
7453
7454                QT_EDITION               Set to the edition of Qt (i.e. DesktopLight)
7455                QT_EDITION_DESKTOPLIGHT  True if QT_EDITION == DesktopLight
7456                QT_QTCORE_FOUND          True if QtCore was found.
7457                QT_QTGUI_FOUND           True if QtGui was found.
7458                QT_QT3SUPPORT_FOUND      True if Qt3Support was found.
7459                QT_QTASSISTANT_FOUND     True if QtAssistant was found.
7460                QT_QTASSISTANTCLIENT_FOUND  True if QtAssistantClient was found.
7461                QT_QAXCONTAINER_FOUND    True if QAxContainer was found (Windows only).
7462                QT_QAXSERVER_FOUND       True if QAxServer was found (Windows only).
7463                QT_QTDBUS_FOUND          True if QtDBus was found.
7464                QT_QTDESIGNER_FOUND      True if QtDesigner was found.
7465                QT_QTDESIGNERCOMPONENTS  True if QtDesignerComponents was found.
7466                QT_QTHELP_FOUND          True if QtHelp was found.
7467                QT_QTMOTIF_FOUND         True if QtMotif was found.
7468                QT_QTMULTIMEDIA_FOUND    True if QtMultimedia was found (since Qt 4.6.0).
7469                QT_QTNETWORK_FOUND       True if QtNetwork was found.
7470                QT_QTNSPLUGIN_FOUND      True if QtNsPlugin was found.
7471                QT_QTOPENGL_FOUND        True if QtOpenGL was found.
7472                QT_QTSQL_FOUND           True if QtSql was found.
7473                QT_QTSVG_FOUND           True if QtSvg was found.
7474                QT_QTSCRIPT_FOUND        True if QtScript was found.
7475                QT_QTSCRIPTTOOLS_FOUND   True if QtScriptTools was found.
7476                QT_QTTEST_FOUND          True if QtTest was found.
7477                QT_QTUITOOLS_FOUND       True if QtUiTools was found.
7478                QT_QTWEBKIT_FOUND        True if QtWebKit was found.
7479                QT_QTXML_FOUND           True if QtXml was found.
7480                QT_QTXMLPATTERNS_FOUND   True if QtXmlPatterns was found.
7481                QT_PHONON_FOUND          True if phonon was found.
7482                QT_QTDECLARATIVE_FOUND   True if QtDeclarative was found.
7483
7484
7485
7486
7487                QT_MAC_USE_COCOA    For Mac OS X, its whether Cocoa or Carbon is used.
7488                                    In general, this should not be used, but its useful
7489                                    when having platform specific code.
7490
7491
7492
7493
7494                QT_DEFINITIONS   Definitions to use when compiling code that uses Qt.
7495                                 You do not need to use this if you include QT_USE_FILE.
7496                                 The QT_USE_FILE will also define QT_DEBUG and QT_NO_DEBUG
7497                                 to fit your current build type.  Those are not contained
7498                                 in QT_DEFINITIONS.
7499
7500
7501
7502
7503                QT_INCLUDES      List of paths to all include directories of
7504                                 Qt4 QT_INCLUDE_DIR and QT_QTCORE_INCLUDE_DIR are
7505                                 always in this variable even if NOTFOUND,
7506                                 all other INCLUDE_DIRS are
7507                                 only added if they are found.
7508                                 You do not need to use this if you include QT_USE_FILE.
7509
7510
7511
7512
7513
7514
7515
7516                Include directories for the Qt modules are listed here.
7517                You do not need to use these variables if you include QT_USE_FILE.
7518
7519
7520
7521
7522                QT_INCLUDE_DIR              Path to "include" of Qt4
7523                QT_QT3SUPPORT_INCLUDE_DIR   Path to "include/Qt3Support"
7524                QT_QTASSISTANT_INCLUDE_DIR  Path to "include/QtAssistant"
7525                QT_QTASSISTANTCLIENT_INCLUDE_DIR       Path to "include/QtAssistant"
7526                QT_QAXCONTAINER_INCLUDE_DIR Path to "include/ActiveQt" (Windows only)
7527                QT_QAXSERVER_INCLUDE_DIR    Path to "include/ActiveQt" (Windows only)
7528                QT_QTCORE_INCLUDE_DIR       Path to "include/QtCore"
7529                QT_QTDBUS_INCLUDE_DIR       Path to "include/QtDBus"
7530                QT_QTDESIGNER_INCLUDE_DIR   Path to "include/QtDesigner"
7531                QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR   Path to "include/QtDesigner"
7532                QT_QTGUI_INCLUDE_DIR        Path to "include/QtGui"
7533                QT_QTHELP_INCLUDE_DIR       Path to "include/QtHelp"
7534                QT_QTMOTIF_INCLUDE_DIR      Path to "include/QtMotif"
7535                QT_QTMULTIMEDIA_INCLUDE_DIR Path to "include/QtMultimedia"
7536                QT_QTNETWORK_INCLUDE_DIR    Path to "include/QtNetwork"
7537                QT_QTNSPLUGIN_INCLUDE_DIR   Path to "include/QtNsPlugin"
7538                QT_QTOPENGL_INCLUDE_DIR     Path to "include/QtOpenGL"
7539                QT_QTSCRIPT_INCLUDE_DIR     Path to "include/QtScript"
7540                QT_QTSQL_INCLUDE_DIR        Path to "include/QtSql"
7541                QT_QTSVG_INCLUDE_DIR        Path to "include/QtSvg"
7542                QT_QTTEST_INCLUDE_DIR       Path to "include/QtTest"
7543                QT_QTWEBKIT_INCLUDE_DIR     Path to "include/QtWebKit"
7544                QT_QTXML_INCLUDE_DIR        Path to "include/QtXml"
7545                QT_QTXMLPATTERNS_INCLUDE_DIR  Path to "include/QtXmlPatterns"
7546                QT_PHONON_INCLUDE_DIR       Path to "include/phonon"
7547                QT_QTSCRIPTTOOLS_INCLUDE_DIR       Path to "include/QtScriptTools"
7548                QT_QTDECLARATIVE_INCLUDE_DIR       Path to "include/QtDeclarative"
7549
7550
7551
7552
7553                QT_BINARY_DIR               Path to "bin" of Qt4
7554                QT_LIBRARY_DIR              Path to "lib" of Qt4
7555                QT_PLUGINS_DIR              Path to "plugins" for Qt4
7556                QT_TRANSLATIONS_DIR         Path to "translations" of Qt4
7557                QT_IMPORTS_DIR              Path to "imports" of Qt4
7558                QT_DOC_DIR                  Path to "doc" of Qt4
7559                QT_MKSPECS_DIR              Path to "mkspecs" of Qt4
7560
7561
7562
7563
7564
7565
7566
7567              The Qt toolkit may contain both debug and release libraries.  In
7568              that  case,  the  following library variables will contain both.
7569              You  do  not  need  to  use  these  variables  if  you   include
7570              QT_USE_FILE, and use QT_LIBRARIES.
7571
7572
7573                QT_QT3SUPPORT_LIBRARY            The Qt3Support library
7574                QT_QTASSISTANT_LIBRARY           The QtAssistant library
7575                QT_QTASSISTANTCLIENT_LIBRARY     The QtAssistantClient library
7576                QT_QAXCONTAINER_LIBRARY           The QAxContainer library (Windows only)
7577                QT_QAXSERVER_LIBRARY                The QAxServer library (Windows only)
7578                QT_QTCORE_LIBRARY                The QtCore library
7579                QT_QTDBUS_LIBRARY                The QtDBus library
7580                QT_QTDESIGNER_LIBRARY            The QtDesigner library
7581                QT_QTDESIGNERCOMPONENTS_LIBRARY  The QtDesignerComponents library
7582                QT_QTGUI_LIBRARY                 The QtGui library
7583                QT_QTHELP_LIBRARY                The QtHelp library
7584                QT_QTMOTIF_LIBRARY               The QtMotif library
7585                QT_QTMULTIMEDIA_LIBRARY          The QtMultimedia library
7586                QT_QTNETWORK_LIBRARY             The QtNetwork library
7587                QT_QTNSPLUGIN_LIBRARY            The QtNsPLugin library
7588                QT_QTOPENGL_LIBRARY              The QtOpenGL library
7589                QT_QTSCRIPT_LIBRARY              The QtScript library
7590                QT_QTSQL_LIBRARY                 The QtSql library
7591                QT_QTSVG_LIBRARY                 The QtSvg library
7592                QT_QTTEST_LIBRARY                The QtTest library
7593                QT_QTUITOOLS_LIBRARY             The QtUiTools library
7594                QT_QTWEBKIT_LIBRARY              The QtWebKit library
7595                QT_QTXML_LIBRARY                 The QtXml library
7596                QT_QTXMLPATTERNS_LIBRARY         The QtXmlPatterns library
7597                QT_QTMAIN_LIBRARY                The qtmain library for Windows
7598                QT_PHONON_LIBRARY                The phonon library
7599                QT_QTSCRIPTTOOLS_LIBRARY         The QtScriptTools library
7600
7601
7602
7603
7604              The QtDeclarative library:             QT_QTDECLARATIVE_LIBRARY
7605
7606
7607              also defined, but NOT for general use are
7608
7609
7610                QT_MOC_EXECUTABLE                   Where to find the moc tool.
7611                QT_UIC_EXECUTABLE                   Where to find the uic tool.
7612                QT_UIC3_EXECUTABLE                  Where to find the uic3 tool.
7613                QT_RCC_EXECUTABLE                   Where to find the rcc tool
7614                QT_DBUSCPP2XML_EXECUTABLE           Where to find the qdbuscpp2xml tool.
7615                QT_DBUSXML2CPP_EXECUTABLE           Where to find the qdbusxml2cpp tool.
7616                QT_LUPDATE_EXECUTABLE               Where to find the lupdate tool.
7617                QT_LRELEASE_EXECUTABLE              Where to find the lrelease tool.
7618                QT_QCOLLECTIONGENERATOR_EXECUTABLE  Where to find the qcollectiongenerator tool.
7619                QT_DESIGNER_EXECUTABLE              Where to find the Qt designer tool.
7620                QT_LINGUIST_EXECUTABLE              Where to find the Qt linguist tool.
7621
7622
7623
7624
7625
7626
7627
7628              These are around for backwards compatibility they will be set
7629
7630
7631                QT_WRAP_CPP  Set true if QT_MOC_EXECUTABLE is found
7632                QT_WRAP_UI   Set true if QT_UIC_EXECUTABLE is found
7633
7634
7635
7636
7637              These  variables  do  _NOT_ have any effect anymore (compared to
7638              FindQt.cmake)
7639
7640
7641                QT_MT_REQUIRED         Qt4 is now always multithreaded
7642
7643
7644
7645
7646              These variables are set to "" Because Qt structure changed (They
7647              make no sense in Qt4)
7648
7649
7650                QT_QT_LIBRARY        Qt-Library is now split
7651
7652
7653       FindQuickTime
7654
7655
7656              Locate  QuickTime  This  module defines QUICKTIME_LIBRARY QUICK‐
7657              TIME_FOUND, if  false,  do  not  try  to  link  to  gdal  QUICK‐
7658              TIME_INCLUDE_DIR, where to find the headers
7659
7660
7661              $QUICKTIME_DIR  is an environment variable that would correspond
7662              to the ./configure --prefix=$QUICKTIME_DIR
7663
7664
7665              Created by Eric Wing.
7666
7667
7668       FindRTI
7669              Try to find M&S HLA RTI libraries
7670
7671              This module finds if any HLA RTI is installed  and  locates  the
7672              standard RTI include files and libraries.
7673
7674
7675              RTI  is  a  simulation  infrastructure  standardized by IEEE and
7676              SISO. It has a well defined C++ API that assures that simulation
7677              applications are independent on a particular RTI implementation.
7678
7679
7680                http://en.wikipedia.org/wiki/Run-Time_Infrastructure_(simulation)
7681
7682
7683
7684
7685              This code sets the following variables:
7686
7687
7688                RTI_INCLUDE_DIR = the directory where RTI includes file are found
7689                RTI_LIBRARIES = The libraries to link against to use RTI
7690                RTI_DEFINITIONS = -DRTI_USES_STD_FSTREAM
7691                RTI_FOUND = Set to FALSE if any HLA RTI was not found
7692
7693
7694
7695
7696              Report problems to <certi-devel@nongnu.org>
7697
7698
7699       FindRuby
7700              Find Ruby
7701
7702              This  module finds if Ruby is installed and determines where the
7703              include files and libraries are. Ruby 1.8 and 1.9 are supported.
7704
7705
7706              The minimum required version of Ruby can be specified using  the
7707              standard syntax, e.g. find_package(Ruby 1.8)
7708
7709
7710              It  also  determines  what the name of the library is. This code
7711              sets the following variables:
7712
7713
7714                RUBY_EXECUTABLE   = full path to the ruby binary
7715                RUBY_INCLUDE_DIRS = include dirs to be used when using the ruby library
7716                RUBY_LIBRARY      = full path to the ruby library
7717                RUBY_VERSION      = the version of ruby which was found, e.g. "1.8.7"
7718                RUBY_FOUND        = set to true if ruby ws found successfully
7719
7720
7721
7722
7723                RUBY_INCLUDE_PATH = same as RUBY_INCLUDE_DIRS, only provided for compatibility reasons, don't use it
7724
7725
7726       FindSDL
7727              Locate SDL library
7728
7729              This module defines
7730
7731
7732                SDL_LIBRARY, the name of the library to link against
7733                SDL_FOUND, if false, do not try to link to SDL
7734                SDL_INCLUDE_DIR, where to find SDL.h
7735                SDL_VERSION_STRING, human-readable string containing the version of SDL
7736
7737
7738
7739
7740              This module responds to the the flag:
7741
7742
7743                SDL_BUILDING_LIBRARY
7744                  If this is defined, then no SDL_main will be linked in because
7745                  only applications need main().
7746                  Otherwise, it is assumed you are building an application and this
7747                  module will attempt to locate and set the the proper link flags
7748                  as part of the returned SDL_LIBRARY variable.
7749
7750
7751
7752
7753              Don't forget to include SDLmain.h and SDLmain.m your project for
7754              the OS X framework based version. (Other versions link to -lSDL‐
7755              main which this module will try to find on  your  behalf.)  Also
7756              for  OS  X,  this  module  will automatically add the -framework
7757              Cocoa on your behalf.
7758
7759
7760
7761
7762
7763              Additional Note: If you see an empty  SDL_LIBRARY_TEMP  in  your
7764              configuration  and  no  SDL_LIBRARY, it means CMake did not find
7765              your SDL library (SDL.dll, libsdl.so, SDL.framework,  etc).  Set
7766              SDL_LIBRARY_TEMP  to  point  to  your SDL library, and configure
7767              again. Similarly, if  you  see  an  empty  SDLMAIN_LIBRARY,  you
7768              should  set  this value as appropriate. These values are used to
7769              generate the final SDL_LIBRARY variable, but when  these  values
7770              are unset, SDL_LIBRARY does not get created.
7771
7772
7773
7774
7775
7776              $SDLDIR  is an environment variable that would correspond to the
7777              ./configure --prefix=$SDLDIR used  in  building  SDL.  l.e.galup
7778              9-20-02
7779
7780
7781              Modified  by  Eric  Wing.  Added  code  to assist with automated
7782              building by using environmental variables and providing  a  more
7783              controlled/consistent  search  behavior. Added new modifications
7784              to recognize OS X frameworks and additional Unix paths (FreeBSD,
7785              etc).  Also  corrected the header search path to follow "proper"
7786              SDL guidelines. Added a search for SDLmain which  is  needed  by
7787              some  platforms.  Added  a search for threads which is needed by
7788              some platforms. Added needed compile switches for MinGW.
7789
7790
7791              On OSX, this will prefer the Framework version (if  found)  over
7792              others.  People will have to manually change the cache values of
7793              SDL_LIBRARY to override this selection or set the CMake environ‐
7794              ment CMAKE_INCLUDE_PATH to modify the search paths.
7795
7796
7797              Note  that  the  header  path has changed from SDL/SDL.h to just
7798              SDL.h This needed to change because "proper" SDL  convention  is
7799              #include  "SDL.h", not <SDL/SDL.h>. This is done for portability
7800              reasons because not all systems place things in SDL/ (see  Free‐
7801              BSD).
7802
7803
7804       FindSDL_image
7805              Locate SDL_image library
7806
7807              This module defines:
7808
7809
7810                SDL_IMAGE_LIBRARIES, the name of the library to link against
7811                SDL_IMAGE_INCLUDE_DIRS, where to find the headers
7812                SDL_IMAGE_FOUND, if false, do not try to link against
7813                SDL_IMAGE_VERSION_STRING - human-readable string containing the version of SDL_image
7814
7815
7816
7817
7818              For backward compatiblity the following variables are also set:
7819
7820
7821                SDLIMAGE_LIBRARY (same value as SDL_IMAGE_LIBRARIES)
7822                SDLIMAGE_INCLUDE_DIR (same value as SDL_IMAGE_INCLUDE_DIRS)
7823                SDLIMAGE_FOUND (same value as SDL_IMAGE_FOUND)
7824
7825
7826
7827
7828              $SDLDIR  is an environment variable that would correspond to the
7829              ./configure --prefix=$SDLDIR used in building SDL.
7830
7831
7832              Created by Eric Wing. This was influenced by  the  FindSDL.cmake
7833              module,  but with modifications to recognize OS X frameworks and
7834              additional Unix paths (FreeBSD, etc).
7835
7836
7837       FindSDL_mixer
7838              Locate SDL_mixer library
7839
7840              This module defines:
7841
7842
7843                SDL_MIXER_LIBRARIES, the name of the library to link against
7844                SDL_MIXER_INCLUDE_DIRS, where to find the headers
7845                SDL_MIXER_FOUND, if false, do not try to link against
7846                SDL_MIXER_VERSION_STRING - human-readable string containing the version of SDL_mixer
7847
7848
7849
7850
7851              For backward compatiblity the following variables are also set:
7852
7853
7854                SDLMIXER_LIBRARY (same value as SDL_MIXER_LIBRARIES)
7855                SDLMIXER_INCLUDE_DIR (same value as SDL_MIXER_INCLUDE_DIRS)
7856                SDLMIXER_FOUND (same value as SDL_MIXER_FOUND)
7857
7858
7859
7860
7861              $SDLDIR is an environment variable that would correspond to  the
7862              ./configure --prefix=$SDLDIR used in building SDL.
7863
7864
7865              Created  by  Eric Wing. This was influenced by the FindSDL.cmake
7866              module, but with modifications to recognize OS X frameworks  and
7867              additional Unix paths (FreeBSD, etc).
7868
7869
7870       FindSDL_net
7871              Locate SDL_net library
7872
7873              This module defines:
7874
7875
7876                SDL_NET_LIBRARIES, the name of the library to link against
7877                SDL_NET_INCLUDE_DIRS, where to find the headers
7878                SDL_NET_FOUND, if false, do not try to link against
7879                SDL_NET_VERSION_STRING - human-readable string containing the version of SDL_net
7880
7881
7882
7883
7884              For backward compatiblity the following variables are also set:
7885
7886
7887                SDLNET_LIBRARY (same value as SDL_NET_LIBRARIES)
7888                SDLNET_INCLUDE_DIR (same value as SDL_NET_INCLUDE_DIRS)
7889                SDLNET_FOUND (same value as SDL_NET_FOUND)
7890
7891
7892
7893
7894              $SDLDIR  is an environment variable that would correspond to the
7895              ./configure --prefix=$SDLDIR used in building SDL.
7896
7897
7898              Created by Eric Wing. This was influenced by  the  FindSDL.cmake
7899              module,  but with modifications to recognize OS X frameworks and
7900              additional Unix paths (FreeBSD, etc).
7901
7902
7903       FindSDL_sound
7904              Locates the SDL_sound library
7905
7906
7907
7908
7909              This module depends on SDL being found and must be called  AFTER
7910              FindSDL.cmake is called.
7911
7912
7913              This module defines
7914
7915
7916                SDL_SOUND_INCLUDE_DIR, where to find SDL_sound.h
7917                SDL_SOUND_FOUND, if false, do not try to link to SDL_sound
7918                SDL_SOUND_LIBRARIES, this contains the list of libraries that you need
7919                  to link against. This is a read-only variable and is marked INTERNAL.
7920                SDL_SOUND_EXTRAS, this is an optional variable for you to add your own
7921                  flags to SDL_SOUND_LIBRARIES. This is prepended to SDL_SOUND_LIBRARIES.
7922                  This is available mostly for cases this module failed to anticipate for
7923                  and you must add additional flags. This is marked as ADVANCED.
7924                SDL_SOUND_VERSION_STRING, human-readable string containing the version of SDL_sound
7925
7926
7927
7928
7929              This  module  also  defines  (but  you  shouldn't  need  to  use
7930              directly)
7931
7932
7933                 SDL_SOUND_LIBRARY, the name of just the SDL_sound library you would link
7934                 against. Use SDL_SOUND_LIBRARIES for you link instructions and not this one.
7935
7936              And might define the following as needed
7937
7938
7939                 MIKMOD_LIBRARY
7940                 MODPLUG_LIBRARY
7941                 OGG_LIBRARY
7942                 VORBIS_LIBRARY
7943                 SMPEG_LIBRARY
7944                 FLAC_LIBRARY
7945                 SPEEX_LIBRARY
7946
7947
7948
7949
7950              Typically, you should not use these variables directly, and  you
7951              should  use SDL_SOUND_LIBRARIES which contains SDL_SOUND_LIBRARY
7952              and the other audio libraries (if needed) to  successfully  com‐
7953              pile on your system.
7954
7955
7956              Created by Eric Wing. This module is a bit more complicated than
7957              the other FindSDL* family modules. The reason is that  SDL_sound
7958              can  be  compiled in a large variety of different ways which are
7959              independent of platform. SDL_sound may dynamically link  against
7960              other  3rd party libraries to get additional codec support, such
7961              as Ogg Vorbis, SMPEG, ModPlug, MikMod, FLAC, Speex,  and  poten‐
7962              tially  others.  Under  some  circumstances  which I don't fully
7963              understand, there seems  to  be  a  requirement  that  dependent
7964              libraries  of  libraries  you use must also be explicitly linked
7965              against in order to successfully  compile.  SDL_sound  does  not
7966              currently  have any system in place to know how it was compiled.
7967              So this CMake module does the hard work in  trying  to  discover
7968              which  3rd  party  libraries are required for building (if any).
7969              This module uses a brute force approach to create a test program
7970              that  uses  SDL_sound,  and then tries to build it. If the build
7971              fails, it parses the error output for known symbol names to fig‐
7972              ure out which libraries are needed.
7973
7974
7975              Responds  to the $SDLDIR and $SDLSOUNDDIR environmental variable
7976              that would correspond to the ./configure  --prefix=$SDLDIR  used
7977              in building SDL.
7978
7979
7980              On  OSX,  this will prefer the Framework version (if found) over
7981              others. People will have to manually change the cache values  of
7982              SDL_LIBRARY  to override this selectionor set the CMake environ‐
7983              ment CMAKE_INCLUDE_PATH to modify the search paths.
7984
7985
7986       FindSDL_ttf
7987              Locate SDL_ttf library
7988
7989              This module defines:
7990
7991
7992                SDL_TTF_LIBRARIES, the name of the library to link against
7993                SDL_TTF_INCLUDE_DIRS, where to find the headers
7994                SDL_TTF_FOUND, if false, do not try to link against
7995                SDL_TTF_VERSION_STRING - human-readable string containing the version of SDL_ttf
7996
7997
7998
7999
8000              For backward compatiblity the following variables are also set:
8001
8002
8003                SDLTTF_LIBRARY (same value as SDL_TTF_LIBRARIES)
8004                SDLTTF_INCLUDE_DIR (same value as SDL_TTF_INCLUDE_DIRS)
8005                SDLTTF_FOUND (same value as SDL_TTF_FOUND)
8006
8007
8008
8009
8010              $SDLDIR is an environment variable that would correspond to  the
8011              ./configure --prefix=$SDLDIR used in building SDL.
8012
8013
8014              Created  by  Eric Wing. This was influenced by the FindSDL.cmake
8015              module, but with modifications to recognize OS X frameworks  and
8016              additional Unix paths (FreeBSD, etc).
8017
8018
8019       FindSWIG
8020              Find SWIG
8021
8022              This  module  finds  an  installed  SWIG.  It sets the following
8023              variables:
8024
8025
8026                SWIG_FOUND - set to true if SWIG is found
8027                SWIG_DIR - the directory where swig is installed
8028                SWIG_EXECUTABLE - the path to the swig executable
8029                SWIG_VERSION   - the version number of the swig executable
8030
8031
8032
8033
8034              The minimum required version of SWIG can be specified using  the
8035              standard syntax, e.g. find_package(SWIG 1.1)
8036
8037
8038              All  information  is  collected  from the SWIG_EXECUTABLE so the
8039              version to be found can be changed  from  the  command  line  by
8040              means of setting SWIG_EXECUTABLE
8041
8042
8043
8044       FindSelfPackers
8045              Find upx
8046
8047              This  module  looks  for  some executable packers (i.e. software
8048              that  compress  executables  or  shared  libs  into   on-the-fly
8049              self-extracting executables or shared libs. Examples:
8050
8051
8052                UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
8053
8054
8055       FindSquish
8056              -- Typical Use
8057
8058
8059
8060
8061              This  module  can  be used to find Squish. Currently Squish ver‐
8062              sions 3 and 4 are supported.
8063
8064
8065                SQUISH_FOUND                    If false, don't try to use Squish
8066                SQUISH_VERSION                  The full version of Squish found
8067                SQUISH_VERSION_MAJOR            The major version of Squish found
8068                SQUISH_VERSION_MINOR            The minor version of Squish found
8069                SQUISH_VERSION_PATCH            The patch version of Squish found
8070
8071
8072
8073
8074                SQUISH_INSTALL_DIR              The Squish installation directory (containing bin, lib, etc)
8075                SQUISH_SERVER_EXECUTABLE        The squishserver executable
8076                SQUISH_CLIENT_EXECUTABLE        The squishrunner executable
8077
8078
8079
8080
8081                SQUISH_INSTALL_DIR_FOUND        Was the install directory found?
8082                SQUISH_SERVER_EXECUTABLE_FOUND  Was the server executable found?
8083                SQUISH_CLIENT_EXECUTABLE_FOUND  Was the client executable found?
8084
8085
8086
8087
8088              It provides  the  function  squish_v4_add_test()  for  adding  a
8089              squish test to cmake using Squish 4.x:
8090
8091
8092                 squish_v4_add_test(cmakeTestName AUT targetName SUITE suiteName TEST squishTestName
8093                                 [SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] )
8094
8095
8096
8097
8098              The arguments have the following meaning:
8099
8100
8101                 cmakeTestName: this will be used as the first argument for add_test()
8102                 AUT targetName: the name of the cmake target which will be used as AUT, i.e. the
8103                                 executable which will be tested.
8104                 SUITE suiteName: this is either the full path to the squish suite, or just the
8105                                  last directory of the suite, i.e. the suite name. In this case
8106                                  the CMakeLists.txt which calls squish_add_test() must be located
8107                                  in the parent directory of the suite directory.
8108                 TEST squishTestName: the name of the squish test, i.e. the name of the subdirectory
8109                                      of the test inside the suite directory.
8110                 SETTINGSGROUP group: if specified, the given settings group will be used for executing the test.
8111                                      If not specified, the groupname will be "CTest_<username>"
8112                 PRE_COMMAND command:  if specified, the given command will be executed before starting the squish test.
8113                 POST_COMMAND command: same as PRE_COMMAND, but after the squish test has been executed.
8114
8115
8116
8117
8118                 enable_testing()
8119                 find_package(Squish 4.0)
8120                 if (SQUISH_FOUND)
8121                    squish_v4_add_test(myTestName AUT myApp SUITE ${CMAKE_SOURCE_DIR}/tests/mySuite TEST someSquishTest SETTINGSGROUP myGroup )
8122                 endif ()
8123
8124
8125
8126
8127
8128
8129
8130              For  users  of Squish version 3.x the macro squish_v3_add_test()
8131              is provided:
8132
8133
8134                 squish_v3_add_test(testName applicationUnderTest testCase envVars testWrapper)
8135                 Use this macro to add a test using Squish 3.x.
8136
8137
8138
8139
8140                enable_testing()
8141                find_package(Squish)
8142                if (SQUISH_FOUND)
8143                  squish_v3_add_test(myTestName myApplication testCase envVars testWrapper)
8144                endif ()
8145
8146
8147
8148
8149              macro  SQUISH_ADD_TEST(testName  applicationUnderTest   testCase
8150              envVars testWrapper)
8151
8152
8153                 This is deprecated. Use SQUISH_V3_ADD_TEST() if you are using Squish 3.x instead.
8154
8155
8156       FindSubversion
8157              Extract information from a subversion working copy
8158
8159              The module defines the following variables:
8160
8161
8162                Subversion_SVN_EXECUTABLE - path to svn command line client
8163                Subversion_VERSION_SVN - version of svn command line client
8164                Subversion_FOUND - true if the command line client was found
8165                SUBVERSION_FOUND - same as Subversion_FOUND, set for compatiblity reasons
8166
8167
8168
8169
8170              The  minimum  required  version  of  Subversion can be specified
8171              using the standard syntax, e.g. find_package(Subversion 1.4)
8172
8173
8174              If the command line client executable is found  two  macros  are
8175              defined:
8176
8177
8178                Subversion_WC_INFO(<dir> <var-prefix>)
8179                Subversion_WC_LOG(<dir> <var-prefix>)
8180
8181              Subversion_WC_INFO  extracts information of a subversion working
8182              copy at a given location. This macro defines the following vari‐
8183              ables:
8184
8185
8186                <var-prefix>_WC_URL - url of the repository (at <dir>)
8187                <var-prefix>_WC_ROOT - root url of the repository
8188                <var-prefix>_WC_REVISION - current revision
8189                <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
8190                <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
8191                <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
8192                <var-prefix>_WC_INFO - output of command `svn info <dir>'
8193
8194              Subversion_WC_LOG retrieves the log message of the base revision
8195              of a subversion working copy at a  given  location.  This  macro
8196              defines the variable:
8197
8198
8199                <var-prefix>_LAST_CHANGED_LOG - last log of base revision
8200
8201              Example usage:
8202
8203
8204                find_package(Subversion)
8205                if(SUBVERSION_FOUND)
8206                  Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
8207                  message("Current revision is ${Project_WC_REVISION}")
8208                  Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project)
8209                  message("Last changed log is ${Project_LAST_CHANGED_LOG}")
8210                endif()
8211
8212
8213       FindTCL
8214              TK_INTERNAL_PATH was removed.
8215
8216              This  module  finds if Tcl is installed and determines where the
8217              include files and libraries are. It  also  determines  what  the
8218              name of the library is. This code sets the following variables:
8219
8220
8221                TCL_FOUND              = Tcl was found
8222                TK_FOUND               = Tk was found
8223                TCLTK_FOUND            = Tcl and Tk were found
8224                TCL_LIBRARY            = path to Tcl library (tcl tcl80)
8225                TCL_INCLUDE_PATH       = path to where tcl.h can be found
8226                TCL_TCLSH              = path to tclsh binary (tcl tcl80)
8227                TK_LIBRARY             = path to Tk library (tk tk80 etc)
8228                TK_INCLUDE_PATH        = path to where tk.h can be found
8229                TK_WISH                = full path to the wish executable
8230
8231
8232
8233
8234              In an effort to remove some clutter and clear up some issues for
8235              people who are not necessarily  Tcl/Tk  gurus/developpers,  some
8236              variables  were  moved or removed. Changes compared to CMake 2.4
8237              are:
8238
8239
8240                 => they were only useful for people writing Tcl/Tk extensions.
8241                 => these libs are not packaged by default with Tcl/Tk distributions.
8242                    Even when Tcl/Tk is built from source, several flavors of debug libs
8243                    are created and there is no real reason to pick a single one
8244                    specifically (say, amongst tcl84g, tcl84gs, or tcl84sgx).
8245                    Let's leave that choice to the user by allowing him to assign
8246                    TCL_LIBRARY to any Tcl library, debug or not.
8247                 => this ended up being only a Win32 variable, and there is a lot of
8248                    confusion regarding the location of this file in an installed Tcl/Tk
8249                    tree anyway (see 8.5 for example). If you need the internal path at
8250                    this point it is safer you ask directly where the *source* tree is
8251                    and dig from there.
8252
8253
8254       FindTIFF
8255              Find TIFF library
8256
8257              Find the native TIFF includes and library This module defines
8258
8259
8260                TIFF_INCLUDE_DIR, where to find tiff.h, etc.
8261                TIFF_LIBRARIES, libraries to link against to use TIFF.
8262                TIFF_FOUND, If false, do not try to use TIFF.
8263
8264              also defined, but not for general use are
8265
8266
8267                TIFF_LIBRARY, where to find the TIFF library.
8268
8269
8270       FindTclStub
8271              TCL_STUB_LIBRARY_DEBUG and TK_STUB_LIBRARY_DEBUG were removed.
8272
8273              This module finds Tcl stub libraries. It first finds Tcl include
8274              files and libraries by calling FindTCL.cmake. How to Use the Tcl
8275              Stubs Library:
8276
8277
8278                 http://tcl.activestate.com/doc/howto/stubs.html
8279
8280              Using Stub Libraries:
8281
8282
8283                 http://safari.oreilly.com/0130385603/ch48lev1sec3
8284
8285              This code sets the following variables:
8286
8287
8288                TCL_STUB_LIBRARY       = path to Tcl stub library
8289                TK_STUB_LIBRARY        = path to Tk stub library
8290                TTK_STUB_LIBRARY       = path to ttk stub library
8291
8292
8293
8294
8295              In an effort to remove some clutter and clear up some issues for
8296              people  who  are  not necessarily Tcl/Tk gurus/developpers, some
8297              variables were moved or removed. Changes compared to  CMake  2.4
8298              are:
8299
8300
8301                 => these libs are not packaged by default with Tcl/Tk distributions.
8302                    Even when Tcl/Tk is built from source, several flavors of debug libs
8303                    are created and there is no real reason to pick a single one
8304                    specifically (say, amongst tclstub84g, tclstub84gs, or tclstub84sgx).
8305                    Let's leave that choice to the user by allowing him to assign
8306                    TCL_STUB_LIBRARY to any Tcl library, debug or not.
8307
8308
8309       FindTclsh
8310              Find tclsh
8311
8312              This  module  finds if TCL is installed and determines where the
8313              include files and libraries are. It  also  determines  what  the
8314              name of the library is. This code sets the following variables:
8315
8316
8317                TCLSH_FOUND = TRUE if tclsh has been found
8318                TCL_TCLSH = the path to the tclsh executable
8319
8320              In cygwin, look for the cygwin version first.  Don't look for it
8321              later to avoid finding the cygwin version on a Win32 build.
8322
8323
8324       FindThreads
8325              This module determines the thread library of the system.
8326
8327              The following variables are set
8328
8329
8330                CMAKE_THREAD_LIBS_INIT     - the thread library
8331                CMAKE_USE_SPROC_INIT       - are we using sproc?
8332                CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads?
8333                CMAKE_USE_PTHREADS_INIT    - are we using pthreads
8334                CMAKE_HP_PTHREADS_INIT     - are we using hp pthreads
8335
8336              For systems with multiple thread libraries, caller can set
8337
8338
8339                CMAKE_THREAD_PREFER_PTHREAD
8340
8341
8342       FindUnixCommands
8343              Find unix commands from cygwin
8344
8345              This module looks for some usual Unix commands.
8346
8347
8348
8349       FindVTK
8350              Find a VTK installation or build tree.
8351
8352              The following variables are set if VTK is found.  If VTK is  not
8353              found, VTK_FOUND is set to false.
8354
8355
8356                VTK_FOUND         - Set to true when VTK is found.
8357                VTK_USE_FILE      - CMake file to use VTK.
8358                VTK_MAJOR_VERSION - The VTK major version number.
8359                VTK_MINOR_VERSION - The VTK minor version number
8360                                     (odd non-release).
8361                VTK_BUILD_VERSION - The VTK patch level
8362                                     (meaningless for odd minor).
8363                VTK_INCLUDE_DIRS  - Include directories for VTK
8364                VTK_LIBRARY_DIRS  - Link directories for VTK libraries
8365                VTK_KITS          - List of VTK kits, in CAPS
8366                                    (COMMON,IO,) etc.
8367                VTK_LANGUAGES     - List of wrapped languages, in CAPS
8368                                    (TCL, PYHTON,) etc.
8369
8370              The  following  cache  entries must be set by the user to locate
8371              VTK:
8372
8373
8374                VTK_DIR  - The directory containing VTKConfig.cmake.
8375                           This is either the root of the build tree,
8376                           or the lib/vtk directory.  This is the
8377                           only cache entry.
8378
8379              The following variables are set for backward  compatibility  and
8380              should not be used in new code:
8381
8382
8383                USE_VTK_FILE - The full path to the UseVTK.cmake file.
8384                               This is provided for backward
8385                               compatibility.  Use VTK_USE_FILE
8386                               instead.
8387
8388
8389
8390
8391
8392       FindWget
8393              Find wget
8394
8395              This  module  looks  for wget. This module defines the following
8396              values:
8397
8398
8399                WGET_EXECUTABLE: the full path to the wget tool.
8400                WGET_FOUND: True if wget has been found.
8401
8402
8403       FindWish
8404              Find wish installation
8405
8406              This module finds if TCL is installed and determines  where  the
8407              include  files  and  libraries  are. It also determines what the
8408              name of the library is. This code sets the following variables:
8409
8410
8411                TK_WISH = the path to the wish executable
8412
8413
8414
8415
8416              if UNIX is defined, then it will look  for  the  cygwin  version
8417              first
8418
8419
8420       FindX11
8421              Find X11 installation
8422
8423              Try  to  find  X11  on  UNIX  systems.  The following values are
8424              defined
8425
8426
8427                X11_FOUND        - True if X11 is available
8428                X11_INCLUDE_DIR  - include directories to use X11
8429                X11_LIBRARIES    - link against these to use X11
8430
8431
8432
8433
8434              and also the following  more  fine  grained  variables:  Include
8435              paths:        X11_ICE_INCLUDE_PATH,                 X11_ICE_LIB,
8436              X11_ICE_FOUND
8437
8438
8439                              X11_SM_INCLUDE_PATH,           X11_SM_LIB,         X11_SM_FOUND
8440                              X11_X11_INCLUDE_PATH,          X11_X11_LIB
8441                              X11_Xaccessrules_INCLUDE_PATH,                     X11_Xaccess_FOUND
8442                              X11_Xaccessstr_INCLUDE_PATH,                       X11_Xaccess_FOUND
8443                              X11_Xau_INCLUDE_PATH,          X11_Xau_LIB,        X11_Xau_FOUND
8444                              X11_Xcomposite_INCLUDE_PATH,   X11_Xcomposite_LIB, X11_Xcomposite_FOUND
8445                              X11_Xcursor_INCLUDE_PATH,      X11_Xcursor_LIB,    X11_Xcursor_FOUND
8446                              X11_Xdamage_INCLUDE_PATH,      X11_Xdamage_LIB,    X11_Xdamage_FOUND
8447                              X11_Xdmcp_INCLUDE_PATH,        X11_Xdmcp_LIB,      X11_Xdmcp_FOUND
8448                                                             X11_Xext_LIB,       X11_Xext_FOUND
8449                              X11_dpms_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_dpms_FOUND
8450                              X11_XShm_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_XShm_FOUND
8451                              X11_Xshape_INCLUDE_PATH,       (in X11_Xext_LIB),  X11_Xshape_FOUND
8452                              X11_xf86misc_INCLUDE_PATH,     X11_Xxf86misc_LIB,  X11_xf86misc_FOUND
8453                              X11_xf86vmode_INCLUDE_PATH,    X11_Xxf86vm_LIB     X11_xf86vmode_FOUND
8454                              X11_Xfixes_INCLUDE_PATH,       X11_Xfixes_LIB,     X11_Xfixes_FOUND
8455                              X11_Xft_INCLUDE_PATH,          X11_Xft_LIB,        X11_Xft_FOUND
8456                              X11_Xi_INCLUDE_PATH,           X11_Xi_LIB,         X11_Xi_FOUND
8457                              X11_Xinerama_INCLUDE_PATH,     X11_Xinerama_LIB,   X11_Xinerama_FOUND
8458                              X11_Xinput_INCLUDE_PATH,       X11_Xinput_LIB,     X11_Xinput_FOUND
8459                              X11_Xkb_INCLUDE_PATH,                              X11_Xkb_FOUND
8460                              X11_Xkblib_INCLUDE_PATH,                           X11_Xkb_FOUND
8461                              X11_Xkbfile_INCLUDE_PATH,      X11_Xkbfile_LIB,    X11_Xkbfile_FOUND
8462                              X11_Xmu_INCLUDE_PATH,          X11_Xmu_LIB,        X11_Xmu_FOUND
8463                              X11_Xpm_INCLUDE_PATH,          X11_Xpm_LIB,        X11_Xpm_FOUND
8464                              X11_XTest_INCLUDE_PATH,        X11_XTest_LIB,      X11_XTest_FOUND
8465                              X11_Xrandr_INCLUDE_PATH,       X11_Xrandr_LIB,     X11_Xrandr_FOUND
8466                              X11_Xrender_INCLUDE_PATH,      X11_Xrender_LIB,    X11_Xrender_FOUND
8467                              X11_Xscreensaver_INCLUDE_PATH, X11_Xscreensaver_LIB, X11_Xscreensaver_FOUND
8468                              X11_Xt_INCLUDE_PATH,           X11_Xt_LIB,         X11_Xt_FOUND
8469                              X11_Xutil_INCLUDE_PATH,                            X11_Xutil_FOUND
8470                              X11_Xv_INCLUDE_PATH,           X11_Xv_LIB,         X11_Xv_FOUND
8471                              X11_XSync_INCLUDE_PATH,        (in X11_Xext_LIB),  X11_XSync_FOUND
8472
8473
8474       FindXMLRPC
8475              Find xmlrpc
8476
8477              Find the native XMLRPC headers and libraries.
8478
8479
8480                XMLRPC_INCLUDE_DIRS      - where to find xmlrpc.h, etc.
8481                XMLRPC_LIBRARIES         - List of libraries when using xmlrpc.
8482                XMLRPC_FOUND             - True if xmlrpc found.
8483
8484              XMLRPC modules may be specified as components for this find mod‐
8485              ule.  Modules  may be listed by running "xmlrpc-c-config".  Mod‐
8486              ules include:
8487
8488
8489                c++            C++ wrapper code
8490                libwww-client  libwww-based client
8491                cgi-server     CGI-based server
8492                abyss-server   ABYSS-based server
8493
8494              Typical usage:
8495
8496
8497                find_package(XMLRPC REQUIRED libwww-client)
8498
8499
8500       FindZLIB
8501              Find zlib
8502
8503              Find the native ZLIB includes and library. Once done  this  will
8504              define
8505
8506
8507                ZLIB_INCLUDE_DIRS   - where to find zlib.h, etc.
8508                ZLIB_LIBRARIES      - List of libraries when using zlib.
8509                ZLIB_FOUND          - True if zlib found.
8510
8511
8512
8513
8514                ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
8515                ZLIB_VERSION_MAJOR  - The major version of zlib
8516                ZLIB_VERSION_MINOR  - The minor version of zlib
8517                ZLIB_VERSION_PATCH  - The patch version of zlib
8518                ZLIB_VERSION_TWEAK  - The tweak version of zlib
8519
8520
8521
8522
8523              The following variable are provided for backward compatibility
8524
8525
8526                ZLIB_MAJOR_VERSION  - The major version of zlib
8527                ZLIB_MINOR_VERSION  - The minor version of zlib
8528                ZLIB_PATCH_VERSION  - The patch version of zlib
8529
8530
8531
8532
8533              An  includer  may  set  ZLIB_ROOT to a zlib installation root to
8534              tell this module where to look.
8535
8536
8537       Findosg
8538
8539
8540
8541
8542
8543              NOTE: It is highly recommended that you use  the  new  FindOpen‐
8544              SceneGraph.cmake introduced in CMake 2.6.3 and not use this Find
8545              module directly.
8546
8547
8548              This is part of the Findosg* suite used to  find  OpenSceneGraph
8549              components.  Each  component  is separate and you must opt in to
8550              each module. You must also opt into OpenGL and OpenThreads  (and
8551              Producer  if  needed) as these modules won't do it for you. This
8552              is to allow you control over your own system piece by  piece  in
8553              case  you  need  to  opt out of certain components or change the
8554              Find behavior for  a  particular  module  (perhaps  because  the
8555              default FindOpenGL.cmake module doesn't work with your system as
8556              an example). If you want to use a more  convenient  module  that
8557              includes everything, use the FindOpenSceneGraph.cmake instead of
8558              the Findosg*.cmake modules.
8559
8560
8561              Locate osg This module defines
8562
8563
8564              OSG_FOUND - Was the Osg found? OSG_INCLUDE_DIR - Where  to  find
8565              the  headers  OSG_LIBRARIES  - The libraries to link against for
8566              the OSG (use this)
8567
8568
8569              OSG_LIBRARY - The OSG library OSG_LIBRARY_DEBUG - The OSG  debug
8570              library
8571
8572
8573              $OSGDIR  is an environment variable that would correspond to the
8574              ./configure --prefix=$OSGDIR used in building osg.
8575
8576
8577              Created by Eric Wing.
8578
8579
8580       FindosgAnimation
8581
8582
8583              This is part of the Findosg* suite used to  find  OpenSceneGraph
8584              components.  Each  component  is separate and you must opt in to
8585              each module. You must also opt into OpenGL and OpenThreads  (and
8586              Producer  if  needed) as these modules won't do it for you. This
8587              is to allow you control over your own system piece by  piece  in
8588              case  you  need  to  opt out of certain components or change the
8589              Find behavior for  a  particular  module  (perhaps  because  the
8590              default FindOpenGL.cmake module doesn't work with your system as
8591              an example). If you want to use a more  convenient  module  that
8592              includes everything, use the FindOpenSceneGraph.cmake instead of
8593              the Findosg*.cmake modules.
8594
8595
8596              Locate osgAnimation This module defines
8597
8598
8599              OSGANIMATION_FOUND   -   Was   osgAnimation   found?   OSGANIMA‐
8600              TION_INCLUDE_DIR   -   Where   to  find  the  headers  OSGANIMA‐
8601              TION_LIBRARIES - The libraries to link against for the OSG  (use
8602              this)
8603
8604
8605              OSGANIMATION_LIBRARY     -    The    OSG    library    OSGANIMA‐
8606              TION_LIBRARY_DEBUG - The OSG debug library
8607
8608
8609              $OSGDIR is an environment variable that would correspond to  the
8610              ./configure --prefix=$OSGDIR used in building osg.
8611
8612
8613              Created by Eric Wing.
8614
8615
8616       FindosgDB
8617
8618
8619              This  is  part of the Findosg* suite used to find OpenSceneGraph
8620              components. Each component is separate and you must  opt  in  to
8621              each  module. You must also opt into OpenGL and OpenThreads (and
8622              Producer if needed) as these modules won't do it for  you.  This
8623              is  to  allow you control over your own system piece by piece in
8624              case you need to opt out of certain  components  or  change  the
8625              Find  behavior  for  a  particular  module  (perhaps because the
8626              default FindOpenGL.cmake module doesn't work with your system as
8627              an  example).  If  you want to use a more convenient module that
8628              includes everything, use the FindOpenSceneGraph.cmake instead of
8629              the Findosg*.cmake modules.
8630
8631
8632              Locate osgDB This module defines
8633
8634
8635              OSGDB_FOUND - Was osgDB found? OSGDB_INCLUDE_DIR - Where to find
8636              the headers OSGDB_LIBRARIES - The libraries to link against  for
8637              the osgDB (use this)
8638
8639
8640              OSGDB_LIBRARY  -  The  osgDB  library  OSGDB_LIBRARY_DEBUG - The
8641              osgDB debug library
8642
8643
8644              $OSGDIR is an environment variable that would correspond to  the
8645              ./configure --prefix=$OSGDIR used in building osg.
8646
8647
8648              Created by Eric Wing.
8649
8650
8651       FindosgFX
8652
8653
8654              This  is  part of the Findosg* suite used to find OpenSceneGraph
8655              components. Each component is separate and you must  opt  in  to
8656              each  module. You must also opt into OpenGL and OpenThreads (and
8657              Producer if needed) as these modules won't do it for  you.  This
8658              is  to  allow you control over your own system piece by piece in
8659              case you need to opt out of certain  components  or  change  the
8660              Find  behavior  for  a  particular  module  (perhaps because the
8661              default FindOpenGL.cmake module doesn't work with your system as
8662              an  example).  If  you want to use a more convenient module that
8663              includes everything, use the FindOpenSceneGraph.cmake instead of
8664              the Findosg*.cmake modules.
8665
8666
8667              Locate osgFX This module defines
8668
8669
8670              OSGFX_FOUND - Was osgFX found? OSGFX_INCLUDE_DIR - Where to find
8671              the headers OSGFX_LIBRARIES - The libraries to link against  for
8672              the osgFX (use this)
8673
8674
8675              OSGFX_LIBRARY  -  The  osgFX  library  OSGFX_LIBRARY_DEBUG - The
8676              osgFX debug library
8677
8678
8679              $OSGDIR is an environment variable that would correspond to  the
8680              ./configure --prefix=$OSGDIR used in building osg.
8681
8682
8683              Created by Eric Wing.
8684
8685
8686       FindosgGA
8687
8688
8689              This  is  part of the Findosg* suite used to find OpenSceneGraph
8690              components. Each component is separate and you must  opt  in  to
8691              each  module. You must also opt into OpenGL and OpenThreads (and
8692              Producer if needed) as these modules won't do it for  you.  This
8693              is  to  allow you control over your own system piece by piece in
8694              case you need to opt out of certain  components  or  change  the
8695              Find  behavior  for  a  particular  module  (perhaps because the
8696              default FindOpenGL.cmake module doesn't work with your system as
8697              an  example).  If  you want to use a more convenient module that
8698              includes everything, use the FindOpenSceneGraph.cmake instead of
8699              the Findosg*.cmake modules.
8700
8701
8702              Locate osgGA This module defines
8703
8704
8705              OSGGA_FOUND - Was osgGA found? OSGGA_INCLUDE_DIR - Where to find
8706              the headers OSGGA_LIBRARIES - The libraries to link against  for
8707              the osgGA (use this)
8708
8709
8710              OSGGA_LIBRARY  -  The  osgGA  library  OSGGA_LIBRARY_DEBUG - The
8711              osgGA debug library
8712
8713
8714              $OSGDIR is an environment variable that would correspond to  the
8715              ./configure --prefix=$OSGDIR used in building osg.
8716
8717
8718              Created by Eric Wing.
8719
8720
8721       FindosgIntrospection
8722
8723
8724              This  is  part of the Findosg* suite used to find OpenSceneGraph
8725              components. Each component is separate and you must  opt  in  to
8726              each  module. You must also opt into OpenGL and OpenThreads (and
8727              Producer if needed) as these modules won't do it for  you.  This
8728              is  to  allow you control over your own system piece by piece in
8729              case you need to opt out of certain  components  or  change  the
8730              Find  behavior  for  a  particular  module  (perhaps because the
8731              default FindOpenGL.cmake module doesn't work with your system as
8732              an  example).  If  you want to use a more convenient module that
8733              includes everything, use the FindOpenSceneGraph.cmake instead of
8734              the Findosg*.cmake modules.
8735
8736
8737              Locate osgINTROSPECTION This module defines
8738
8739
8740              OSGINTROSPECTION_FOUND  -  Was osgIntrospection found? OSGINTRO‐
8741              SPECTION_INCLUDE_DIR - Where to find the  headers  OSGINTROSPEC‐
8742              TION_LIBRARIES - The libraries to link for osgIntrospection (use
8743              this)
8744
8745
8746              OSGINTROSPECTION_LIBRARY - The osgIntrospection  library  OSGIN‐
8747              TROSPECTION_LIBRARY_DEBUG - The osgIntrospection debug library
8748
8749
8750              $OSGDIR  is an environment variable that would correspond to the
8751              ./configure --prefix=$OSGDIR used in building osg.
8752
8753
8754              Created by Eric Wing.
8755
8756
8757       FindosgManipulator
8758
8759
8760              This is part of the Findosg* suite used to  find  OpenSceneGraph
8761              components.  Each  component  is separate and you must opt in to
8762              each module. You must also opt into OpenGL and OpenThreads  (and
8763              Producer  if  needed) as these modules won't do it for you. This
8764              is to allow you control over your own system piece by  piece  in
8765              case  you  need  to  opt out of certain components or change the
8766              Find behavior for  a  particular  module  (perhaps  because  the
8767              default FindOpenGL.cmake module doesn't work with your system as
8768              an example). If you want to use a more  convenient  module  that
8769              includes everything, use the FindOpenSceneGraph.cmake instead of
8770              the Findosg*.cmake modules.
8771
8772
8773              Locate osgManipulator This module defines
8774
8775
8776              OSGMANIPULATOR_FOUND - Was  osgManipulator  found?  OSGMANIPULA‐
8777              TOR_INCLUDE_DIR   -  Where  to  find  the  headers  OSGMANIPULA‐
8778              TOR_LIBRARIES - The libraries to link  for  osgManipulator  (use
8779              this)
8780
8781
8782              OSGMANIPULATOR_LIBRARY - The osgManipulator library OSGMANIPULA‐
8783              TOR_LIBRARY_DEBUG - The osgManipulator debug library
8784
8785
8786              $OSGDIR is an environment variable that would correspond to  the
8787              ./configure --prefix=$OSGDIR used in building osg.
8788
8789
8790              Created by Eric Wing.
8791
8792
8793       FindosgParticle
8794
8795
8796              This  is  part of the Findosg* suite used to find OpenSceneGraph
8797              components. Each component is separate and you must  opt  in  to
8798              each  module. You must also opt into OpenGL and OpenThreads (and
8799              Producer if needed) as these modules won't do it for  you.  This
8800              is  to  allow you control over your own system piece by piece in
8801              case you need to opt out of certain  components  or  change  the
8802              Find  behavior  for  a  particular  module  (perhaps because the
8803              default FindOpenGL.cmake module doesn't work with your system as
8804              an  example).  If  you want to use a more convenient module that
8805              includes everything, use the FindOpenSceneGraph.cmake instead of
8806              the Findosg*.cmake modules.
8807
8808
8809              Locate osgParticle This module defines
8810
8811
8812              OSGPARTICLE_FOUND    -    Was   osgParticle   found?   OSGPARTI‐
8813              CLE_INCLUDE_DIR  -  Where  to   find   the   headers   OSGPARTI‐
8814              CLE_LIBRARIES - The libraries to link for osgParticle (use this)
8815
8816
8817              OSGPARTICLE_LIBRARY   -   The   osgParticle   library  OSGPARTI‐
8818              CLE_LIBRARY_DEBUG - The osgParticle debug library
8819
8820
8821              $OSGDIR is an environment variable that would correspond to  the
8822              ./configure --prefix=$OSGDIR used in building osg.
8823
8824
8825              Created by Eric Wing.
8826
8827
8828       FindosgPresentation
8829
8830
8831              This  is  part of the Findosg* suite used to find OpenSceneGraph
8832              components. Each component is separate and you must  opt  in  to
8833              each  module. You must also opt into OpenGL and OpenThreads (and
8834              Producer if needed) as these modules won't do it for  you.  This
8835              is  to  allow you control over your own system piece by piece in
8836              case you need to opt out of certain  components  or  change  the
8837              Find  behavior  for  a  particular  module  (perhaps because the
8838              default FindOpenGL.cmake module doesn't work with your system as
8839              an  example).  If  you want to use a more convenient module that
8840              includes everything, use the FindOpenSceneGraph.cmake instead of
8841              the Findosg*.cmake modules.
8842
8843
8844              Locate osgPresentation This module defines
8845
8846
8847              OSGPRESENTATION_FOUND  - Was osgPresentation found? OSGPRESENTA‐
8848              TION_INCLUDE_DIR  -  Where  to  find  the  headers  OSGPRESENTA‐
8849              TION_LIBRARIES  - The libraries to link for osgPresentation (use
8850              this)
8851
8852
8853              OSGPRESENTATION_LIBRARY - The osgPresentation library OSGPRESEN‐
8854              TATION_LIBRARY_DEBUG - The osgPresentation debug library
8855
8856
8857              $OSGDIR  is an environment variable that would correspond to the
8858              ./configure --prefix=$OSGDIR used in building osg.
8859
8860
8861              Created by Eric Wing. Modified to work with  osgPresentation  by
8862              Robert Osfield, January 2012.
8863
8864
8865       FindosgProducer
8866
8867
8868              This  is  part of the Findosg* suite used to find OpenSceneGraph
8869              components. Each component is separate and you must  opt  in  to
8870              each  module. You must also opt into OpenGL and OpenThreads (and
8871              Producer if needed) as these modules won't do it for  you.  This
8872              is  to  allow you control over your own system piece by piece in
8873              case you need to opt out of certain  components  or  change  the
8874              Find  behavior  for  a  particular  module  (perhaps because the
8875              default FindOpenGL.cmake module doesn't work with your system as
8876              an  example).  If  you want to use a more convenient module that
8877              includes everything, use the FindOpenSceneGraph.cmake instead of
8878              the Findosg*.cmake modules.
8879
8880
8881              Locate osgProducer This module defines
8882
8883
8884              OSGPRODUCER_FOUND    -    Was    osgProducer    found?   OSGPRO‐
8885              DUCER_INCLUDE_DIR  -  Where  to   find   the   headers   OSGPRO‐
8886              DUCER_LIBRARIES  -  The  libraries  to link for osgProducer (use
8887              this)
8888
8889
8890              OSGPRODUCER_LIBRARY   -   The   osgProducer   library    OSGPRO‐
8891              DUCER_LIBRARY_DEBUG - The osgProducer debug library
8892
8893
8894              $OSGDIR  is an environment variable that would correspond to the
8895              ./configure --prefix=$OSGDIR used in building osg.
8896
8897
8898              Created by Eric Wing.
8899
8900
8901       FindosgQt
8902
8903
8904              This is part of the Findosg* suite used to  find  OpenSceneGraph
8905              components.  Each  component  is separate and you must opt in to
8906              each module. You must also opt into OpenGL and OpenThreads  (and
8907              Producer  if  needed) as these modules won't do it for you. This
8908              is to allow you control over your own system piece by  piece  in
8909              case  you  need  to  opt out of certain components or change the
8910              Find behavior for  a  particular  module  (perhaps  because  the
8911              default FindOpenGL.cmake module doesn't work with your system as
8912              an example). If you want to use a more  convenient  module  that
8913              includes everything, use the FindOpenSceneGraph.cmake instead of
8914              the Findosg*.cmake modules.
8915
8916
8917              Locate osgQt This module defines
8918
8919
8920              OSGQT_FOUND - Was osgQt found? OSGQT_INCLUDE_DIR - Where to find
8921              the  headers  OSGQT_LIBRARIES  - The libraries to link for osgQt
8922              (use this)
8923
8924
8925              OSGQT_LIBRARY - The  osgQt  library  OSGQT_LIBRARY_DEBUG  -  The
8926              osgQt debug library
8927
8928
8929              $OSGDIR  is an environment variable that would correspond to the
8930              ./configure --prefix=$OSGDIR used in building osg.
8931
8932
8933              Created by Eric Wing. Modified to  work  with  osgQt  by  Robert
8934              Osfield, January 2012.
8935
8936
8937       FindosgShadow
8938
8939
8940              This  is  part of the Findosg* suite used to find OpenSceneGraph
8941              components. Each component is separate and you must  opt  in  to
8942              each  module. You must also opt into OpenGL and OpenThreads (and
8943              Producer if needed) as these modules won't do it for  you.  This
8944              is  to  allow you control over your own system piece by piece in
8945              case you need to opt out of certain  components  or  change  the
8946              Find  behavior  for  a  particular  module  (perhaps because the
8947              default FindOpenGL.cmake module doesn't work with your system as
8948              an  example).  If  you want to use a more convenient module that
8949              includes everything, use the FindOpenSceneGraph.cmake instead of
8950              the Findosg*.cmake modules.
8951
8952
8953              Locate osgShadow This module defines
8954
8955
8956              OSGSHADOW_FOUND  -  Was osgShadow found? OSGSHADOW_INCLUDE_DIR -
8957              Where to find the headers OSGSHADOW_LIBRARIES - The libraries to
8958              link for osgShadow (use this)
8959
8960
8961              OSGSHADOW_LIBRARY       -       The       osgShadow      library
8962              OSGSHADOW_LIBRARY_DEBUG - The osgShadow debug library
8963
8964
8965              $OSGDIR is an environment variable that would correspond to  the
8966              ./configure --prefix=$OSGDIR used in building osg.
8967
8968
8969              Created by Eric Wing.
8970
8971
8972       FindosgSim
8973
8974
8975              This  is  part of the Findosg* suite used to find OpenSceneGraph
8976              components. Each component is separate and you must  opt  in  to
8977              each  module. You must also opt into OpenGL and OpenThreads (and
8978              Producer if needed) as these modules won't do it for  you.  This
8979              is  to  allow you control over your own system piece by piece in
8980              case you need to opt out of certain  components  or  change  the
8981              Find  behavior  for  a  particular  module  (perhaps because the
8982              default FindOpenGL.cmake module doesn't work with your system as
8983              an  example).  If  you want to use a more convenient module that
8984              includes everything, use the FindOpenSceneGraph.cmake instead of
8985              the Findosg*.cmake modules.
8986
8987
8988              Locate osgSim This module defines
8989
8990
8991              OSGSIM_FOUND  -  Was osgSim found? OSGSIM_INCLUDE_DIR - Where to
8992              find the headers OSGSIM_LIBRARIES - The libraries  to  link  for
8993              osgSim (use this)
8994
8995
8996              OSGSIM_LIBRARY  -  The osgSim library OSGSIM_LIBRARY_DEBUG - The
8997              osgSim debug library
8998
8999
9000              $OSGDIR is an environment variable that would correspond to  the
9001              ./configure --prefix=$OSGDIR used in building osg.
9002
9003
9004              Created by Eric Wing.
9005
9006
9007       FindosgTerrain
9008
9009
9010              This  is  part of the Findosg* suite used to find OpenSceneGraph
9011              components. Each component is separate and you must  opt  in  to
9012              each  module. You must also opt into OpenGL and OpenThreads (and
9013              Producer if needed) as these modules won't do it for  you.  This
9014              is  to  allow you control over your own system piece by piece in
9015              case you need to opt out of certain  components  or  change  the
9016              Find  behavior  for  a  particular  module  (perhaps because the
9017              default FindOpenGL.cmake module doesn't work with your system as
9018              an  example).  If  you want to use a more convenient module that
9019              includes everything, use the FindOpenSceneGraph.cmake instead of
9020              the Findosg*.cmake modules.
9021
9022
9023              Locate osgTerrain This module defines
9024
9025
9026              OSGTERRAIN_FOUND  - Was osgTerrain found? OSGTERRAIN_INCLUDE_DIR
9027              - Where to find the headers OSGTERRAIN_LIBRARIES - The libraries
9028              to link for osgTerrain (use this)
9029
9030
9031              OSGTERRAIN_LIBRARY    -    The    osgTerrain   library   OSGTER‐
9032              RAIN_LIBRARY_DEBUG - The osgTerrain debug library
9033
9034
9035              $OSGDIR is an environment variable that would correspond to  the
9036              ./configure --prefix=$OSGDIR used in building osg.
9037
9038
9039              Created by Eric Wing.
9040
9041
9042       FindosgText
9043
9044
9045              This  is  part of the Findosg* suite used to find OpenSceneGraph
9046              components. Each component is separate and you must  opt  in  to
9047              each  module. You must also opt into OpenGL and OpenThreads (and
9048              Producer if needed) as these modules won't do it for  you.  This
9049              is  to  allow you control over your own system piece by piece in
9050              case you need to opt out of certain  components  or  change  the
9051              Find  behavior  for  a  particular  module  (perhaps because the
9052              default FindOpenGL.cmake module doesn't work with your system as
9053              an  example).  If  you want to use a more convenient module that
9054              includes everything, use the FindOpenSceneGraph.cmake instead of
9055              the Findosg*.cmake modules.
9056
9057
9058              Locate osgText This module defines
9059
9060
9061              OSGTEXT_FOUND  -  Was osgText found? OSGTEXT_INCLUDE_DIR - Where
9062              to find the headers OSGTEXT_LIBRARIES - The  libraries  to  link
9063              for osgText (use this)
9064
9065
9066              OSGTEXT_LIBRARY  -  The  osgText library OSGTEXT_LIBRARY_DEBUG -
9067              The osgText debug library
9068
9069
9070              $OSGDIR is an environment variable that would correspond to  the
9071              ./configure --prefix=$OSGDIR used in building osg.
9072
9073
9074              Created by Eric Wing.
9075
9076
9077       FindosgUtil
9078
9079
9080              This  is  part of the Findosg* suite used to find OpenSceneGraph
9081              components. Each component is separate and you must  opt  in  to
9082              each  module. You must also opt into OpenGL and OpenThreads (and
9083              Producer if needed) as these modules won't do it for  you.  This
9084              is  to  allow you control over your own system piece by piece in
9085              case you need to opt out of certain  components  or  change  the
9086              Find  behavior  for  a  particular  module  (perhaps because the
9087              default FindOpenGL.cmake module doesn't work with your system as
9088              an  example).  If  you want to use a more convenient module that
9089              includes everything, use the FindOpenSceneGraph.cmake instead of
9090              the Findosg*.cmake modules.
9091
9092
9093              Locate osgUtil This module defines
9094
9095
9096              OSGUTIL_FOUND  -  Was osgUtil found? OSGUTIL_INCLUDE_DIR - Where
9097              to find the headers OSGUTIL_LIBRARIES - The  libraries  to  link
9098              for osgUtil (use this)
9099
9100
9101              OSGUTIL_LIBRARY  -  The  osgUtil library OSGUTIL_LIBRARY_DEBUG -
9102              The osgUtil debug library
9103
9104
9105              $OSGDIR is an environment variable that would correspond to  the
9106              ./configure --prefix=$OSGDIR used in building osg.
9107
9108
9109              Created by Eric Wing.
9110
9111
9112       FindosgViewer
9113
9114
9115              This  is  part of the Findosg* suite used to find OpenSceneGraph
9116              components. Each component is separate and you must  opt  in  to
9117              each  module. You must also opt into OpenGL and OpenThreads (and
9118              Producer if needed) as these modules won't do it for  you.  This
9119              is  to  allow you control over your own system piece by piece in
9120              case you need to opt out of certain  components  or  change  the
9121              Find  behavior  for  a  particular  module  (perhaps because the
9122              default FindOpenGL.cmake module doesn't work with your system as
9123              an  example).  If  you want to use a more convenient module that
9124              includes everything, use the FindOpenSceneGraph.cmake instead of
9125              the Findosg*.cmake modules.
9126
9127
9128              Locate osgViewer This module defines
9129
9130
9131              OSGVIEWER_FOUND  -  Was osgViewer found? OSGVIEWER_INCLUDE_DIR -
9132              Where to find the headers OSGVIEWER_LIBRARIES - The libraries to
9133              link for osgViewer (use this)
9134
9135
9136              OSGVIEWER_LIBRARY       -       The       osgViewer      library
9137              OSGVIEWER_LIBRARY_DEBUG - The osgViewer debug library
9138
9139
9140              $OSGDIR is an environment variable that would correspond to  the
9141              ./configure --prefix=$OSGDIR used in building osg.
9142
9143
9144              Created by Eric Wing.
9145
9146
9147       FindosgVolume
9148
9149
9150              This  is  part of the Findosg* suite used to find OpenSceneGraph
9151              components. Each component is separate and you must  opt  in  to
9152              each  module. You must also opt into OpenGL and OpenThreads (and
9153              Producer if needed) as these modules won't do it for  you.  This
9154              is  to  allow you control over your own system piece by piece in
9155              case you need to opt out of certain  components  or  change  the
9156              Find  behavior  for  a  particular  module  (perhaps because the
9157              default FindOpenGL.cmake module doesn't work with your system as
9158              an  example).  If  you want to use a more convenient module that
9159              includes everything, use the FindOpenSceneGraph.cmake instead of
9160              the Findosg*.cmake modules.
9161
9162
9163              Locate osgVolume This module defines
9164
9165
9166              OSGVOLUME_FOUND  -  Was osgVolume found? OSGVOLUME_INCLUDE_DIR -
9167              Where to find the headers OSGVOLUME_LIBRARIES - The libraries to
9168              link for osgVolume (use this)
9169
9170
9171              OSGVOLUME_LIBRARY    -    The    osgVolume    library    OSGVOL‐
9172              UME_LIBRARY_DEBUG - The osgVolume debug library
9173
9174
9175              $OSGDIR is an environment variable that would correspond to  the
9176              ./configure --prefix=$OSGDIR used in building osg.
9177
9178
9179              Created by Eric Wing.
9180
9181
9182       FindosgWidget
9183
9184
9185              This  is  part of the Findosg* suite used to find OpenSceneGraph
9186              components. Each component is separate and you must  opt  in  to
9187              each  module. You must also opt into OpenGL and OpenThreads (and
9188              Producer if needed) as these modules won't do it for  you.  This
9189              is  to  allow you control over your own system piece by piece in
9190              case you need to opt out of certain  components  or  change  the
9191              Find  behavior  for  a  particular  module  (perhaps because the
9192              default FindOpenGL.cmake module doesn't work with your system as
9193              an  example).  If  you want to use a more convenient module that
9194              includes everything, use the FindOpenSceneGraph.cmake instead of
9195              the Findosg*.cmake modules.
9196
9197
9198              Locate osgWidget This module defines
9199
9200
9201              OSGWIDGET_FOUND  -  Was osgWidget found? OSGWIDGET_INCLUDE_DIR -
9202              Where to find the headers OSGWIDGET_LIBRARIES - The libraries to
9203              link for osgWidget (use this)
9204
9205
9206              OSGWIDGET_LIBRARY    -    The    osgWidget    library    OSGWID‐
9207              GET_LIBRARY_DEBUG - The osgWidget debug library
9208
9209
9210              $OSGDIR is an environment variable that would correspond to  the
9211              ./configure --prefix=$OSGDIR used in building osg.
9212
9213
9214              FindosgWidget.cmake  tweaked  from  Findosg* suite as created by
9215              Eric Wing.
9216
9217
9218       Findosg_functions
9219
9220
9221
9222
9223
9224              This CMake file contains two macros to assist with searching for
9225              OSG libraries and nodekits.  Please see FindOpenSceneGraph.cmake
9226              for full documentation.
9227
9228
9229
9230       FindwxWidgets
9231              Find a wxWidgets (a.k.a., wxWindows) installation.
9232
9233              This module finds  if  wxWidgets  is  installed  and  selects  a
9234              default configuration to use. wxWidgets is a modular library. To
9235              specify the modules that you will use, you need to name them  as
9236              components to the package:
9237
9238
9239              find_package(wxWidgets COMPONENTS core base ...)
9240
9241
9242              There are two search branches: a windows style and a unix style.
9243              For windows, the following variables are searched for and set to
9244              defaults  in  case  of  multiple  choices.  Change  them  if the
9245              defaults are not desired (i.e., these are the only variables you
9246              should change to select a configuration):
9247
9248
9249                wxWidgets_ROOT_DIR      - Base wxWidgets directory
9250                                          (e.g., C:/wxWidgets-2.6.3).
9251                wxWidgets_LIB_DIR       - Path to wxWidgets libraries
9252                                          (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
9253                wxWidgets_CONFIGURATION - Configuration to use
9254                                          (e.g., msw, mswd, mswu, mswunivud, etc.)
9255                wxWidgets_EXCLUDE_COMMON_LIBRARIES
9256                                        - Set to TRUE to exclude linking of
9257                                          commonly required libs (e.g., png tiff
9258                                          jpeg zlib regex expat).
9259
9260
9261
9262
9263              For  unix  style  it  uses the wx-config utility. You can select
9264              between  debug/release,  unicode/ansi,  universal/non-universal,
9265              and  static/shared in the QtDialog or ccmake interfaces by turn‐
9266              ing ON/OFF the following variables:
9267
9268
9269                wxWidgets_USE_DEBUG
9270                wxWidgets_USE_UNICODE
9271                wxWidgets_USE_UNIVERSAL
9272                wxWidgets_USE_STATIC
9273
9274
9275
9276
9277              There is also a wxWidgets_CONFIG_OPTIONS variable for all  other
9278              options  that  need  to  be passed to the wx-config utility. For
9279              example, to use the base toolkit found in the  /usr/local  path,
9280              set  the  variable  (before calling the FIND_PACKAGE command) as
9281              such:
9282
9283
9284                set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr)
9285
9286
9287
9288
9289              The following are set after the configuration is done  for  both
9290              windows and unix style:
9291
9292
9293                wxWidgets_FOUND            - Set to TRUE if wxWidgets was found.
9294                wxWidgets_INCLUDE_DIRS     - Include directories for WIN32
9295                                             i.e., where to find "wx/wx.h" and
9296                                             "wx/setup.h"; possibly empty for unices.
9297                wxWidgets_LIBRARIES        - Path to the wxWidgets libraries.
9298                wxWidgets_LIBRARY_DIRS     - compile time link dirs, useful for
9299                                             rpath on UNIX. Typically an empty string
9300                                             in WIN32 environment.
9301                wxWidgets_DEFINITIONS      - Contains defines required to compile/link
9302                                             against WX, e.g. WXUSINGDLL
9303                wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link
9304                                             against WX debug builds, e.g. __WXDEBUG__
9305                wxWidgets_CXX_FLAGS        - Include dirs and compiler flags for
9306                                             unices, empty on WIN32. Essentially
9307                                             "`wx-config --cxxflags`".
9308                wxWidgets_USE_FILE         - Convenience include file.
9309
9310
9311
9312
9313              Sample usage:
9314
9315
9316                 # Note that for MinGW users the order of libs is important!
9317                 find_package(wxWidgets COMPONENTS net gl core base)
9318                 if(wxWidgets_FOUND)
9319                   include(${wxWidgets_USE_FILE})
9320                   # and for each of your dependent executable/library targets:
9321                   target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
9322                 endif()
9323
9324
9325
9326
9327              If wxWidgets is required (i.e., not an optional part):
9328
9329
9330                 find_package(wxWidgets REQUIRED net gl core base)
9331                 include(${wxWidgets_USE_FILE})
9332                 # and for each of your dependent executable/library targets:
9333                 target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
9334
9335
9336       FindwxWindows
9337              Find wxWindows (wxWidgets) installation
9338
9339              This module finds if wxWindows/wxWidgets is installed and deter‐
9340              mines where the include files and libraries are. It also  deter‐
9341              mines  what the name of the library is. Please note this file is
9342              DEPRECATED and replaced by FindwxWidgets.cmake. This  code  sets
9343              the following variables:
9344
9345
9346                WXWINDOWS_FOUND     = system has WxWindows
9347                WXWINDOWS_LIBRARIES = path to the wxWindows libraries
9348                                      on Unix/Linux with additional
9349                                      linker flags from
9350                                      "wx-config --libs"
9351                CMAKE_WXWINDOWS_CXX_FLAGS  = Compiler flags for wxWindows,
9352                                             essentially "`wx-config --cxxflags`"
9353                                             on Linux
9354                WXWINDOWS_INCLUDE_DIR      = where to find "wx/wx.h" and "wx/setup.h"
9355                WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on
9356                                              Unix
9357                WXWINDOWS_DEFINITIONS      = extra defines
9358
9359
9360
9361
9362              OPTIONS If you need OpenGL support please
9363
9364
9365                set(WXWINDOWS_USE_GL 1)
9366
9367              in your CMakeLists.txt *before* you include this file.
9368
9369
9370                HAVE_ISYSTEM      - true required to replace -I by -isystem on g++
9371
9372
9373
9374
9375              For  convenience  include  Use_wxWindows.cmake in your project's
9376              CMakeLists.txt            using             include(${CMAKE_CUR‐
9377              RENT_LIST_DIR}/Use_wxWindows.cmake).
9378
9379
9380              USAGE
9381
9382
9383                set(WXWINDOWS_USE_GL 1)
9384                find_package(wxWindows)
9385
9386
9387
9388
9389              NOTES  wxWidgets  2.6.x  is supported for monolithic builds e.g.
9390              compiled  in wx/build/msw dir as:
9391
9392
9393                nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1
9394
9395
9396
9397
9398              DEPRECATED
9399
9400
9401                CMAKE_WX_CAN_COMPILE
9402                WXWINDOWS_LIBRARY
9403                CMAKE_WX_CXX_FLAGS
9404                WXWINDOWS_INCLUDE_PATH
9405
9406
9407
9408
9409              AUTHOR Jan  Woetzel  <http://www.mip.informatik.uni-kiel.de/~jw>
9410              (07/2003-01/2006)
9411
9412
9413       FortranCInterface
9414              Fortran/C Interface Detection
9415
9416              This module automatically detects the API by which C and Fortran
9417              languages interact.   Variables  indicate  if  the  mangling  is
9418              found:
9419
9420
9421                 FortranCInterface_GLOBAL_FOUND = Global subroutines and functions
9422                 FortranCInterface_MODULE_FOUND = Module subroutines and functions
9423                                                  (declared by "MODULE PROCEDURE")
9424
9425              A  function  is  provided to generate a C header file containing
9426              macros to mangle symbol names:
9427
9428
9429                 FortranCInterface_HEADER(<file>
9430                                          [MACRO_NAMESPACE <macro-ns>]
9431                                          [SYMBOL_NAMESPACE <ns>]
9432                                          [SYMBOLS [<module>:]<function> ...])
9433
9434              It generates in <file> definitions of the following macros:
9435
9436
9437                 #define FortranCInterface_GLOBAL (name,NAME) ...
9438                 #define FortranCInterface_GLOBAL_(name,NAME) ...
9439                 #define FortranCInterface_MODULE (mod,name, MOD,NAME) ...
9440                 #define FortranCInterface_MODULE_(mod,name, MOD,NAME) ...
9441
9442              These macros mangle four categories of Fortran symbols,  respec‐
9443              tively:
9444
9445
9446                 - Global symbols without '_': call mysub()
9447                 - Global symbols with '_'   : call my_sub()
9448                 - Module symbols without '_': use mymod; call mysub()
9449                 - Module symbols with '_'   : use mymod; call my_sub()
9450
9451              If mangling for a category is not known, its macro is left unde‐
9452              fined. All macros require raw names in both lower case and upper
9453              case. The MACRO_NAMESPACE option replaces the default "FortranC‐
9454              Interface_" prefix with a given namespace "<macro-ns>".
9455
9456
9457              The SYMBOLS option lists symbols to mangle automatically with  C
9458              preprocessor definitions:
9459
9460
9461                 <function>          ==> #define <ns><function> ...
9462                 <module>:<function> ==> #define <ns><module>_<function> ...
9463
9464              If  the mangling for some symbol is not known then no preproces‐
9465              sor definition is created, and a warning is displayed. The  SYM‐
9466              BOL_NAMESPACE  option prefixes all preprocessor definitions gen‐
9467              erated by the SYMBOLS option with a given namespace "<ns>".
9468
9469
9470              Example usage:
9471
9472
9473                 include(FortranCInterface)
9474                 FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_")
9475
9476              This creates  a  "FC.h"  header  that  defines  mangling  macros
9477              FC_GLOBAL(), FC_GLOBAL_(), FC_MODULE(), and FC_MODULE_().
9478
9479
9480              Example usage:
9481
9482
9483                 include(FortranCInterface)
9484                 FortranCInterface_HEADER(FCMangle.h
9485                                          MACRO_NAMESPACE "FC_"
9486                                          SYMBOL_NAMESPACE "FC_"
9487                                          SYMBOLS mysub mymod:my_sub)
9488
9489              This  creates a "FCMangle.h" header that defines the same FC_*()
9490              mangling macros as the previous example plus  preprocessor  sym‐
9491              bols FC_mysub and FC_mymod_my_sub.
9492
9493
9494              Another  function  is  provided  to  verify that the Fortran and
9495              C/C++ compilers work together:
9496
9497
9498                 FortranCInterface_VERIFY([CXX] [QUIET])
9499
9500              It tests whether a simple test executable using  Fortran  and  C
9501              (and  C++  when the CXX option is given) compiles and links suc‐
9502              cessfully. The result is stored in the cache  entry  FortranCIn‐
9503              terface_VERIFIED_C  (or FortranCInterface_VERIFIED_CXX if CXX is
9504              given) as a boolean. If the check fails and QUIET is  not  given
9505              the  function  terminates  with a FATAL_ERROR message describing
9506              the problem.  The purpose of this check is to stop a build early
9507              for  incompatible  compiler  combinations.  The test is built in
9508              the Release configuration.
9509
9510
9511              FortranCInterface is aware of possible GLOBAL  and  MODULE  man‐
9512              glings  for  many  Fortran  compilers,  but  it also provides an
9513              interface to specify new possible manglings.  Set the variables
9514
9515
9516                 FortranCInterface_GLOBAL_SYMBOLS
9517                 FortranCInterface_MODULE_SYMBOLS
9518
9519              before including FortranCInterface to specify manglings  of  the
9520              symbols   "MySub",   "My_Sub",  "MyModule:MySub",  and  "My_Mod‐
9521              ule:My_Sub". For example, the code:
9522
9523
9524                 set(FortranCInterface_GLOBAL_SYMBOLS mysub_ my_sub__ MYSUB_)
9525                   #                                  ^^^^^  ^^^^^^   ^^^^^
9526                 set(FortranCInterface_MODULE_SYMBOLS
9527                     __mymodule_MOD_mysub __my_module_MOD_my_sub)
9528                   #   ^^^^^^^^     ^^^^^   ^^^^^^^^^     ^^^^^^
9529                 include(FortranCInterface)
9530
9531              tells FortranCInterface to try  given  GLOBAL  and  MODULE  man‐
9532              glings.  (The  carets  point  at raw symbol names for clarity in
9533              this example but are not needed.)
9534
9535
9536       GNUInstallDirs
9537              Define GNU standard installation directories
9538
9539              Provides install directory variables as defined  for  GNU  soft‐
9540              ware:
9541
9542
9543                http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
9544
9545              Inclusion of this module defines the following variables:
9546
9547
9548                CMAKE_INSTALL_<dir>      - destination for files of a given type
9549                CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
9550
9551              where <dir> is one of:
9552
9553
9554                BINDIR           - user executables (bin)
9555                SBINDIR          - system admin executables (sbin)
9556                LIBEXECDIR       - program executables (libexec)
9557                SYSCONFDIR       - read-only single-machine data (etc)
9558                SHAREDSTATEDIR   - modifiable architecture-independent data (com)
9559                LOCALSTATEDIR    - modifiable single-machine data (var)
9560                LIBDIR           - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
9561                INCLUDEDIR       - C header files (include)
9562                OLDINCLUDEDIR    - C header files for non-gcc (/usr/include)
9563                DATAROOTDIR      - read-only architecture-independent data root (share)
9564                DATADIR          - read-only architecture-independent data (DATAROOTDIR)
9565                INFODIR          - info documentation (DATAROOTDIR/info)
9566                LOCALEDIR        - locale-dependent data (DATAROOTDIR/locale)
9567                MANDIR           - man documentation (DATAROOTDIR/man)
9568                DOCDIR           - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
9569
9570              Each  CMAKE_INSTALL_<dir> value may be passed to the DESTINATION
9571              options of install() commands for the corresponding  file  type.
9572              If  the includer does not define a value the above-shown default
9573              will be used and the value will appear in the cache for  editing
9574              by  the  user.  Each  CMAKE_INSTALL_FULL_<dir> value contains an
9575              absolute path constructed from the corresponding destination  by
9576              prepending (if necessary) the value of CMAKE_INSTALL_PREFIX.
9577
9578
9579       GenerateExportHeader
9580              Function for generation of export macros for libraries
9581
9582              This  module  provides the function GENERATE_EXPORT_HEADER() and
9583              the accompanying ADD_COMPILER_EXPORT_FLAGS() function.
9584
9585
9586              The GENERATE_EXPORT_HEADER function can be used  to  generate  a
9587              file  suitable  for preprocessor inclusion which contains EXPORT
9588              macros to be used in library classes.
9589
9590
9591              GENERATE_EXPORT_HEADER( LIBRARY_TARGET
9592
9593
9594                           [BASE_NAME <base_name>]
9595                           [EXPORT_MACRO_NAME <export_macro_name>]
9596                           [EXPORT_FILE_NAME <export_file_name>]
9597                           [DEPRECATED_MACRO_NAME <deprecated_macro_name>]
9598                           [NO_EXPORT_MACRO_NAME <no_export_macro_name>]
9599                           [STATIC_DEFINE <static_define>]
9600                           [NO_DEPRECATED_MACRO_NAME <no_deprecated_macro_name>]
9601                           [DEFINE_NO_DEPRECATED]
9602                           [PREFIX_NAME <prefix_name>]
9603
9604              )
9605
9606
9607              ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] )
9608
9609
9610              By default GENERATE_EXPORT_HEADER() generates macro names  in  a
9611              file  name  determined  by the name of the library. The ADD_COM‐
9612              PILER_EXPORT_FLAGS   function   adds   -fvisibility=hidden    to
9613              CMAKE_CXX_FLAGS  if  supported,  and is a no-op on Windows which
9614              does not need extra compiler flags for  exporting  support.  You
9615              may    optionally   pass   a   single   argument   to   ADD_COM‐
9616              PILER_EXPORT_FLAGS that will  be  populated  with  the  required
9617              CXX_FLAGS  required  to  enable  visibility support for the com‐
9618              piler/architecture in use.
9619
9620
9621              This means that in the simplest case, users of  these  functions
9622              will be equivalent to:
9623
9624
9625                 add_compiler_export_flags()
9626                 add_library(somelib someclass.cpp)
9627                 generate_export_header(somelib)
9628                 install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR})
9629                 install(FILES
9630                  someclass.h
9631                  ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR}
9632                 )
9633
9634
9635
9636
9637              And in the ABI header files:
9638
9639
9640                 #include "somelib_export.h"
9641                 class SOMELIB_EXPORT SomeClass {
9642                   ...
9643                 };
9644
9645
9646
9647
9648              The  CMake  fragment  will  generate  a file in the ${CMAKE_CUR‐
9649              RENT_BINARY_DIR} called somelib_export.h containing  the  macros
9650              SOMELIB_EXPORT,      SOMELIB_NO_EXPORT,      SOMELIB_DEPRECATED,
9651              SOMELIB_DEPRECATED_EXPORT and SOMELIB_DEPRECATED_NO_EXPORT.  The
9652              resulting  file  should  be  installed with other headers in the
9653              library.
9654
9655
9656              The BASE_NAME argument can be used to override the file name and
9657              the names used for the macros
9658
9659
9660                 add_library(somelib someclass.cpp)
9661                 generate_export_header(somelib
9662                   BASE_NAME other_name
9663                 )
9664
9665
9666
9667
9668              Generates  a  file  called  other_name_export.h  containing  the
9669              macros     OTHER_NAME_EXPORT,      OTHER_NAME_NO_EXPORT      and
9670              OTHER_NAME_DEPRECATED etc.
9671
9672
9673              The  BASE_NAME may be overridden by specifiying other options in
9674              the function. For example:
9675
9676
9677                 add_library(somelib someclass.cpp)
9678                 generate_export_header(somelib
9679                   EXPORT_MACRO_NAME OTHER_NAME_EXPORT
9680                 )
9681
9682
9683
9684
9685              creates the macro OTHER_NAME_EXPORT instead  of  SOMELIB_EXPORT,
9686              but other macros and the generated file name is as default.
9687
9688
9689                 add_library(somelib someclass.cpp)
9690                 generate_export_header(somelib
9691                   DEPRECATED_MACRO_NAME KDE_DEPRECATED
9692                 )
9693
9694
9695
9696
9697              creates the macro KDE_DEPRECATED instead of SOMELIB_DEPRECATED.
9698
9699
9700              If  LIBRARY_TARGET is a static library, macros are defined with‐
9701              out values.
9702
9703
9704              If the same sources are used to  create  both  a  shared  and  a
9705              static library, the uppercased symbol ${BASE_NAME}_STATIC_DEFINE
9706              should be used when building the static library
9707
9708
9709                 add_library(shared_variant SHARED ${lib_SRCS})
9710                 add_library(static_variant ${lib_SRCS})
9711                 generate_export_header(shared_variant BASE_NAME libshared_and_static)
9712                 set_target_properties(static_variant PROPERTIES
9713                   COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)
9714
9715
9716
9717
9718              This will cause the export macros  to  expand  to  nothing  when
9719              building the static library.
9720
9721
9722              If    DEFINE_NO_DEPRECATED    is   specified,   then   a   macro
9723              ${BASE_NAME}_NO_DEPRECATED will be defined  This  macro  can  be
9724              used to remove deprecated code from preprocessor output.
9725
9726
9727                 option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE)
9728                 if (EXCLUDE_DEPRECATED)
9729                   set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED)
9730                 endif()
9731                 generate_export_header(somelib ${NO_BUILD_DEPRECATED})
9732
9733
9734
9735
9736              And then in somelib:
9737
9738
9739                 class SOMELIB_EXPORT SomeClass
9740                 {
9741                 public:
9742                 #ifndef SOMELIB_NO_DEPRECATED
9743                   SOMELIB_DEPRECATED void oldMethod();
9744                 #endif
9745                 };
9746
9747
9748
9749
9750                 #ifndef SOMELIB_NO_DEPRECATED
9751                 void SomeClass::oldMethod() {  }
9752                 #endif
9753
9754
9755
9756
9757              If PREFIX_NAME is specified, the argument will be used as a pre‐
9758              fix to all generated macros.
9759
9760
9761              For example:
9762
9763
9764                 generate_export_header(somelib PREFIX_NAME VTK_)
9765
9766
9767
9768
9769              Generates the macros VTK_SOMELIB_EXPORT etc.
9770
9771
9772       GetPrerequisites
9773              Functions to analyze and list executable file prerequisites.
9774
9775              This module provides functions to list the .dll, .dylib  or  .so
9776              files that an executable or shared library file depends on. (Its
9777              prerequisites.)
9778
9779
9780              It uses various tools to obtain  the  list  of  required  shared
9781              library files:
9782
9783
9784                 dumpbin (Windows)
9785                 objdump (MinGW on Windows)
9786                 ldd (Linux/Unix)
9787                 otool (Mac OSX)
9788
9789              The following functions are provided by this module:
9790
9791
9792                 get_prerequisites
9793                 list_prerequisites
9794                 list_prerequisites_by_glob
9795                 gp_append_unique
9796                 is_file_executable
9797                 gp_item_default_embedded_path
9798                   (projects can override with gp_item_default_embedded_path_override)
9799                 gp_resolve_item
9800                   (projects can override with gp_resolve_item_override)
9801                 gp_resolved_file_type
9802                   (projects can override with gp_resolved_file_type_override)
9803                 gp_file_type
9804
9805              Requires  CMake  2.6 or greater because it uses function, break,
9806              return and PARENT_SCOPE.
9807
9808
9809                GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse>
9810                                  <exepath> <dirs>)
9811
9812              Get the list of shared library files required by  <target>.  The
9813              list  in  the variable named <prerequisites_var> should be empty
9814              on first entry to this function.  On  exit,  <prerequisites_var>
9815              will contain the list of required shared library files.
9816
9817
9818              <target>  is  the  full  path  to an executable file. <prerequi‐
9819              sites_var> is the name  of  a  CMake  variable  to  contain  the
9820              results.  <exclude_system>  must be 0 or 1 indicating whether to
9821              include or exclude "system" prerequisites. If <recurse>  is  set
9822              to  1  all  prerequisites will be found recursively, if set to 0
9823              only direct prerequisites are listed. <exepath> is the  path  to
9824              the top level executable used for @executable_path replacment on
9825              the Mac. <dirs> is a list of  paths  where  libraries  might  be
9826              found:  these paths are searched first when a target without any
9827              path info is given. Then  standard  system  locations  are  also
9828              searched: PATH, Framework locations, /usr/lib...
9829
9830
9831                LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]])
9832
9833              Print a message listing the prerequisites of <target>.
9834
9835
9836              <target> is the name of a shared library or executable target or
9837              the full path  to  a  shared  library  or  executable  file.  If
9838              <recurse>  is  set  to  1 all prerequisites will be found recur‐
9839              sively, if set  to  0  only  direct  prerequisites  are  listed.
9840              <exclude_system> must be 0 or 1 indicating whether to include or
9841              exclude "system" prerequisites. With <verbose> set to 0 only the
9842              full path names of the prerequisites are printed, set to 1 extra
9843              informatin will be displayed.
9844
9845
9846                LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>)
9847
9848              Print the prerequisites of shared library and  executable  files
9849              matching  a globbing pattern. <glob_arg> is GLOB or GLOB_RECURSE
9850              and <glob_exp> is a globbing expression used with "file(GLOB" or
9851              "file(GLOB_RECURSE"  to  retrieve a list of matching files. If a
9852              matching file is executable, its prerequisites are listed.
9853
9854
9855              Any additional (optional) arguments provided are passed along as
9856              the optional arguments to the list_prerequisites calls.
9857
9858
9859                GP_APPEND_UNIQUE(<list_var> <value>)
9860
9861              Append <value> to the list variable <list_var> only if the value
9862              is not already in the list.
9863
9864
9865                IS_FILE_EXECUTABLE(<file> <result_var>)
9866
9867              Return 1 in <result_var> if <file> is  a  binary  executable,  0
9868              otherwise.
9869
9870
9871                GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>)
9872
9873              Return the path that others should refer to the item by when the
9874              item is embedded inside a bundle.
9875
9876
9877              Override on a per-project basis by providing a  project-specific
9878              gp_item_default_embedded_path_override function.
9879
9880
9881                GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var>)
9882
9883              Resolve an item into an existing full path file.
9884
9885
9886              Override  on a per-project basis by providing a project-specific
9887              gp_resolve_item_override function.
9888
9889
9890                GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var>)
9891
9892              Return the type  of  <file>  with  respect  to  <original_file>.
9893              String  describing  type of prerequisite is returned in variable
9894              named <type_var>.
9895
9896
9897              Use <exepath> and <dirs> if necessary  to  resolve  non-absolute
9898              <file> values -- but only for non-embedded items.
9899
9900
9901              Possible types are:
9902
9903
9904                 system
9905                 local
9906                 embedded
9907                 other
9908
9909              Override  on a per-project basis by providing a project-specific
9910              gp_resolved_file_type_override function.
9911
9912
9913                GP_FILE_TYPE(<original_file> <file> <type_var>)
9914
9915              Return the type  of  <file>  with  respect  to  <original_file>.
9916              String  describing  type of prerequisite is returned in variable
9917              named <type_var>.
9918
9919
9920              Possible types are:
9921
9922
9923                 system
9924                 local
9925                 embedded
9926                 other
9927
9928
9929       InstallRequiredSystemLibraries
9930
9931
9932              By including this file, all library files listed in the variable
9933              CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS   will   be   installed   with
9934              install(PROGRAMS ...) into bin for WIN32 and lib for  non-WIN32.
9935              If  CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP is set to TRUE before
9936              including this file, then the INSTALL command is not called. The
9937              user  can  use the variable CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS to
9938              use a custom install command and install them however they want.
9939              If  it  is  the  MSVC  compiler,  then  the  microsoft  run time
9940              libraries  will  be  found  and  automatically  added   to   the
9941              CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS,     and     installed.     If
9942              CMAKE_INSTALL_DEBUG_LIBRARIES is set and it  is  the  MSVC  com‐
9943              piler, then the debug libraries are installed when available. If
9944              CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY is set then  only  the  debug
9945              libraries  are  installed when both debug and release are avail‐
9946              able. If CMAKE_INSTALL_MFC_LIBRARIES is set  then  the  MFC  run
9947              time  libraries  are  installed  as  well  as  the  CRT run time
9948              libraries. If  CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION  is  set
9949              then  the  libraries are installed to that directory rather than
9950              the default. If CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS is
9951              NOT  set,  then this file warns about required files that do not
9952              exist. You can set this variable to  ON  before  including  this
9953              file  to  avoid  the  warning.  For  example,  the Visual Studio
9954              Express editions do not include the redistributable files, so if
9955              you  include  this  file  on  a  machine  with  only  VS Express
9956              installed, you'll get the warning.
9957
9958
9959       MacroAddFileDependencies
9960              MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...)
9961
9962              Using the macro  MACRO_ADD_FILE_DEPENDENCIES()  is  discouraged.
9963              There  are  usually better ways to specify the correct dependen‐
9964              cies.
9965
9966
9967              MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) is  just  a
9968              convenience  wrapper around the OBJECT_DEPENDS source file prop‐
9969              erty. You can just use set_property(SOURCE <file>  APPEND  PROP‐
9970              ERTY OBJECT_DEPENDS depend_files) instead.
9971
9972
9973       ProcessorCount
9974              ProcessorCount(var)
9975
9976              Determine  the  number  of  processors/cores  and  save value in
9977              ${var}
9978
9979
9980              Sets the variable named ${var} to the number of  physical  cores
9981              available  on  the machine if the information can be determined.
9982              Otherwise it is set to 0. Currently this functionality is imple‐
9983              mented  for  AIX,  cygwin, FreeBSD, HPUX, IRIX, Linux, Mac OS X,
9984              QNX, Sun and Windows.
9985
9986
9987              This function is guaranteed to return a positive  integer  (>=1)
9988              if  it  succeeds.  It returns 0 if there's a problem determining
9989              the processor count.
9990
9991
9992              Example use, in a ctest -S dashboard script:
9993
9994
9995                 include(ProcessorCount)
9996                 ProcessorCount(N)
9997                 if(NOT N EQUAL 0)
9998                   set(CTEST_BUILD_FLAGS -j${N})
9999                   set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
10000                 endif()
10001
10002
10003
10004
10005              This function is intended to offer an approximation of the value
10006              of the number of compute cores available on the current machine,
10007              such that you may use that value for parallel building and  par‐
10008              allel  testing.  It  is  meant  to  help  utilize as much of the
10009              machine as seems reasonable. Of course, knowledge of  what  else
10010              might  be  running  on the machine simultaneously should be used
10011              when deciding whether to request a machine's full  capacity  all
10012              for yourself.
10013
10014
10015       Qt4ConfigDependentSettings
10016
10017
10018              This  file  is  included  by  FindQt4.cmake,  don't  include  it
10019              directly.
10020
10021
10022       Qt4Macros
10023
10024
10025              This  file  is  included  by  FindQt4.cmake,  don't  include  it
10026              directly.
10027
10028
10029       SelectLibraryConfigurations
10030
10031
10032              select_library_configurations( basename )
10033
10034
10035              This  macro  takes  a library base name as an argument, and will
10036              choose good  values  for  basename_LIBRARY,  basename_LIBRARIES,
10037              basename_LIBRARY_DEBUG,  and  basename_LIBRARY_RELEASE depending
10038              on   what   has   been   found   and   set.    If   only   base‐
10039              name_LIBRARY_RELEASE is defined, basename_LIBRARY will be set to
10040              the release value, and basename_LIBRARY_DEBUG  will  be  set  to
10041              basename_LIBRARY_DEBUG-NOTFOUND.  If only basename_LIBRARY_DEBUG
10042              is defined, then basename_LIBRARY will take the debug value, and
10043              basename_LIBRARY_RELEASE     will     be     set     to    base‐
10044              name_LIBRARY_RELEASE-NOTFOUND.
10045
10046
10047              If  the  generator  supports  configuration  types,  then  base‐
10048              name_LIBRARY  and  basename_LIBRARIES will be set with debug and
10049              optimized flags specifying the library to be used for the  given
10050              configuration.   If  no build type has been set or the generator
10051              in  use  does  not  support  configuration  types,  then   base‐
10052              name_LIBRARY  and  basename_LIBRARIES will take only the release
10053              value, or the debug value if the release one is not set.
10054
10055
10056       SquishTestScript
10057
10058
10059
10060
10061
10062              This script launches a GUI test using Squish.   You  should  not
10063              call  the script directly; instead, you should access it via the
10064              SQUISH_ADD_TEST macro that is defined in FindSquish.cmake.
10065
10066
10067              This script starts the Squish server, launches the test  on  the
10068              client,  and  finally  stops the squish server.  If any of these
10069              steps fail (including if the tests do not  pass)  then  a  fatal
10070              error is raised.
10071
10072
10073
10074       TestBigEndian
10075              Define macro to determine endian type
10076
10077              Check if the system is big endian or little endian
10078
10079
10080                TEST_BIG_ENDIAN(VARIABLE)
10081                VARIABLE - variable to store the result to
10082
10083
10084
10085
10086
10087       TestCXXAcceptsFlag
10088              Test CXX compiler for a flag
10089
10090              Check if the CXX compiler accepts a flag
10091
10092
10093                Macro CHECK_CXX_ACCEPTS_FLAG(FLAGS VARIABLE) -
10094                   checks if the function exists
10095                FLAGS - the flags to try
10096                VARIABLE - variable to store the result
10097
10098
10099
10100
10101
10102       TestForANSIForScope
10103              Check for ANSI for scope support
10104
10105              Check  if the compiler restricts the scope of variables declared
10106              in a for-init-statement to the loop body.
10107
10108
10109                CMAKE_NO_ANSI_FOR_SCOPE - holds result
10110
10111
10112
10113
10114
10115       TestForANSIStreamHeaders
10116              Test for compiler support of ANSI stream headers iostream, etc.
10117
10118              check if the compiler supports the standard ANSI iostream header
10119              (without the .h)
10120
10121
10122                CMAKE_NO_ANSI_STREAM_HEADERS - defined by the results
10123
10124
10125
10126
10127
10128       TestForSSTREAM
10129              Test for compiler support of ANSI sstream header
10130
10131              check if the compiler supports the standard ANSI sstream header
10132
10133
10134                CMAKE_NO_ANSI_STRING_STREAM - defined by the results
10135
10136
10137
10138
10139
10140       TestForSTDNamespace
10141              Test for std:: namespace support
10142
10143              check if the compiler supports std:: on stl classes
10144
10145
10146                CMAKE_NO_STD_NAMESPACE - defined by the results
10147
10148
10149
10150
10151
10152       UseEcos
10153              This  module defines variables and macros required to build eCos
10154              application.
10155
10156              This file contains the following macros: ECOS_ADD_INCLUDE_DIREC‐
10157              TORIES()  -  add  the eCos include dirs ECOS_ADD_EXECUTABLE(name
10158              source1  ...   sourceN   )   -   create   an   eCos   executable
10159              ECOS_ADJUST_DIRECTORY(VAR  source1  ...  sourceN ) - adjusts the
10160              path of the source files and puts the result into VAR
10161
10162
10163              Macros for  selecting  the  toolchain:  ECOS_USE_ARM_ELF_TOOLS()
10164              -  enable  the  ARM  ELF toolchain for the directory where it is
10165              called ECOS_USE_I386_ELF_TOOLS()       -  enable  the  i386  ELF
10166              toolchain    for    the    directory    where   it   is   called
10167              ECOS_USE_PPC_EABI_TOOLS()      - enable  the  PowerPC  toolchain
10168              for the directory where it is called
10169
10170
10171              It  contains  the following variables: ECOS_DEFINITIONS ECOSCON‐
10172              FIG_EXECUTABLE  ECOS_CONFIG_FILE                -  defaults   to
10173              ecos.ecc,  if your eCos configuration file has a different name,
10174              adjust this variable for internal use only:
10175
10176
10177                ECOS_ADD_TARGET_LIB
10178
10179
10180       UseJava
10181              Use Module for Java
10182
10183              This file provides functions for Java. It is assumed that  Find‐
10184              Java.cmake  has  already  been  loaded.   See FindJava.cmake for
10185              information on how to load Java into your CMake project.
10186
10187
10188              add_jar(target_name
10189
10190
10191                       [SOURCES] source1 [source2 ...] [resource1 ...]
10192                       [INCLUDE_JARS jar1 [jar2 ...]]
10193                       [ENTRY_POINT entry]
10194                       [VERSION version]
10195                       [OUTPUT_NAME name]
10196                       [OUTPUT_DIR dir]
10197                      )
10198
10199
10200
10201
10202              This command creates a <target_name>.jar. It compiles the  given
10203              source   files  (source)  and  adds  the  given  resource  files
10204              (resource) to the jar file. If only  resource  files  are  given
10205              then  just  a  jar file is created. The list of include jars are
10206              added to the classpath when compiling the java sources and  also
10207              to  the  dependencies  of  the target. INCLUDE_JARS also accepts
10208              other target names created by add_jar. For backwards compatibil‐
10209              ity,  jar files listed as sources are ignored (as they have been
10210              since the first version of this module).
10211
10212
10213              The default OUTPUT_DIR can also be changed by setting the  vari‐
10214              able CMAKE_JAVA_TARGET_OUTPUT_DIR.
10215
10216
10217              Additional instructions:
10218
10219
10220                 To add compile flags to the target you can set these flags with
10221                 the following variable:
10222
10223
10224
10225
10226                     set(CMAKE_JAVA_COMPILE_FLAGS -nowarn)
10227
10228
10229
10230
10231                 To add a path or a jar file to the class path you can do this
10232                 with the CMAKE_JAVA_INCLUDE_PATH variable.
10233
10234
10235
10236
10237                     set(CMAKE_JAVA_INCLUDE_PATH /usr/share/java/shibboleet.jar)
10238
10239
10240
10241
10242                 To use a different output name for the target you can set it with:
10243
10244
10245
10246
10247                     add_jar(foobar foobar.java OUTPUT_NAME shibboleet.jar)
10248
10249
10250
10251
10252                 To use a different output directory than CMAKE_CURRENT_BINARY_DIR
10253                 you can set it with:
10254
10255
10256
10257
10258                     add_jar(foobar foobar.java OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin)
10259
10260
10261
10262
10263                 To define an entry point in your jar you can set it with the ENTRY_POINT
10264                 named argument:
10265
10266
10267
10268
10269                     add_jar(example ENTRY_POINT com/examples/MyProject/Main)
10270
10271
10272
10273
10274                 To add a VERSION to the target output name you can set it using
10275                 the VERSION named argument to add_jar. This will create a jar file with the
10276                 name shibboleet-1.0.0.jar and will create a symlink shibboleet.jar
10277                 pointing to the jar with the version information.
10278
10279
10280
10281
10282                     add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
10283
10284
10285
10286
10287                  If the target is a JNI library, utilize the following commands to
10288                  create a JNI symbolic link:
10289
10290
10291
10292
10293                     set(CMAKE_JNI_TARGET TRUE)
10294                     add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
10295                     install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet)
10296                     install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR})
10297
10298
10299
10300
10301                  If a single target needs to produce more than one jar from its
10302                  java source code, to prevent the accumulation of duplicate class
10303                  files in subsequent jars, set/reset CMAKE_JAR_CLASSES_PREFIX prior
10304                  to calling the add_jar() function:
10305
10306
10307
10308
10309                     set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo)
10310                     add_jar(foo foo.java)
10311
10312
10313
10314
10315                     set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar)
10316                     add_jar(bar bar.java)
10317
10318
10319
10320
10321              Target Properties:
10322
10323
10324                 The add_jar() functions sets some target properties. You can get these
10325                 properties with the
10326                    get_property(TARGET <target_name> PROPERTY <propery_name>)
10327                 command.
10328
10329
10330
10331
10332                 INSTALL_FILES      The files which should be installed. This is used by
10333                                    install_jar().
10334                 JNI_SYMLINK        The JNI symlink which should be installed.
10335                                    This is used by install_jni_symlink().
10336                 JAR_FILE           The location of the jar file so that you can include
10337                                    it.
10338                 CLASS_DIR          The directory where the class files can be found. For
10339                                    example to use them with javah.
10340
10341
10342
10343
10344              find_jar(<VAR>
10345
10346
10347                        name | NAMES name1 [name2 ...]
10348                        [PATHS path1 [path2 ... ENV var]]
10349                        [VERSIONS version1 [version2]]
10350                        [DOC "cache documentation string"]
10351                       )
10352
10353
10354
10355
10356              This  command  is  used  to find a full path to the named jar. A
10357              cache entry named by <VAR> is created to stor the result of this
10358              command. If the full path to a jar is found the result is stored
10359              in the variable and the search  will  not  repeated  unless  the
10360              variable  is  cleared.  If  nothing is found, the result will be
10361              <VAR>-NOTFOUND, and the search will be attempted again next time
10362              find_jar is invoked with the same variable. The name of the full
10363              path to a file that is searched for is specified  by  the  names
10364              listed  after NAMES argument. Additional search locations can be
10365              specified after the PATHS argument. If  you  require  special  a
10366              version of a jar file you can specify it with the VERSIONS argu‐
10367              ment. The argument after DOC will be used for the  documentation
10368              string in the cache.
10369
10370
10371              install_jar(TARGET_NAME DESTINATION)
10372
10373
10374              This  command installs the TARGET_NAME files to the given DESTI‐
10375              NATION. It should be called in the same scope as add_jar() or it
10376              will fail.
10377
10378
10379              install_jni_symlink(TARGET_NAME DESTINATION)
10380
10381
10382              This  command installs the TARGET_NAME JNI symlinks to the given
10383              DESTINATION. It should be called in the same scope as  add_jar()
10384              or it will fail.
10385
10386
10387              create_javadoc(<VAR>
10388
10389
10390                              PACKAGES pkg1 [pkg2 ...]
10391                              [SOURCEPATH <sourcepath>]
10392                              [CLASSPATH <classpath>]
10393                              [INSTALLPATH <install path>]
10394                              [DOCTITLE "the documentation title"]
10395                              [WINDOWTITLE "the title of the document"]
10396                              [AUTHOR TRUE|FALSE]
10397                              [USE TRUE|FALSE]
10398                              [VERSION TRUE|FALSE]
10399                             )
10400
10401
10402
10403
10404              Create  java  documentation based on files or packages. For more
10405              details please read the javadoc manpage.
10406
10407
10408              There are two main signatures for create_javadoc. The first sig‐
10409              nature works with package names on a path with source files:
10410
10411
10412                 Example:
10413                 create_javadoc(my_example_doc
10414                   PACKAGES com.exmaple.foo com.example.bar
10415                   SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}"
10416                   CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
10417                   WINDOWTITLE "My example"
10418                   DOCTITLE "<h1>My example</h1>"
10419                   AUTHOR TRUE
10420                   USE TRUE
10421                   VERSION TRUE
10422                 )
10423
10424
10425
10426
10427              The second signature for create_javadoc works on a given list of
10428              files.
10429
10430
10431                 create_javadoc(<VAR>
10432                                FILES file1 [file2 ...]
10433                                [CLASSPATH <classpath>]
10434                                [INSTALLPATH <install path>]
10435                                [DOCTITLE "the documentation title"]
10436                                [WINDOWTITLE "the title of the document"]
10437                                [AUTHOR TRUE|FALSE]
10438                                [USE TRUE|FALSE]
10439                                [VERSION TRUE|FALSE]
10440                               )
10441
10442
10443
10444
10445              Example:
10446
10447
10448                 create_javadoc(my_example_doc
10449                   FILES ${example_SRCS}
10450                   CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
10451                   WINDOWTITLE "My example"
10452                   DOCTITLE "<h1>My example</h1>"
10453                   AUTHOR TRUE
10454                   USE TRUE
10455                   VERSION TRUE
10456                 )
10457
10458
10459
10460
10461              Both signatures share most of the options. These options are the
10462              same as what you can find in the javadoc manpage. Please look at
10463              the manpage for CLASSPATH, DOCTITLE,  WINDOWTITLE,  AUTHOR,  USE
10464              and VERSION.
10465
10466
10467              The documentation will be by default installed to
10468
10469
10470                 ${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR>
10471
10472
10473
10474
10475              if you don't set the INSTALLPATH.
10476
10477
10478
10479       UseJavaClassFilelist
10480
10481
10482
10483
10484
10485              This  script  create  a  list of compiled Java class files to be
10486              added to a jar file. This avoids including cmake files which get
10487              created in the binary directory.
10488
10489
10490
10491       UseJavaSymlinks
10492
10493
10494
10495
10496
10497              Helper script for UseJava.cmake
10498
10499
10500
10501       UsePkgConfig
10502              Obsolete pkg-config module for CMake, use FindPkgConfig instead.
10503
10504
10505
10506
10507              This module defines the following macro:
10508
10509
10510              PKGCONFIG(package includedir libdir linkflags cflags)
10511
10512
10513              Calling  PKGCONFIG  will fill the desired information into the 4
10514              given arguments,  e.g.  PKGCONFIG(libart-2.0  LIBART_INCLUDE_DIR
10515              LIBART_LINK_DIR  LIBART_LINK_FLAGS  LIBART_CFLAGS) if pkg-config
10516              was NOT found or the specified software package  doesn't  exist,
10517              the  variable will be empty when the function returns, otherwise
10518              they will contain the respective information
10519
10520
10521
10522       UseQt4 Use Module for QT4
10523
10524              Sets up C and C++ to use Qt 4.  It is assumed that  FindQt.cmake
10525              has  already  been  loaded.  See FindQt.cmake for information on
10526              how to load Qt 4 into your CMake project.
10527
10528
10529       UseSWIG
10530              SWIG module for CMake
10531
10532              Defines the following macros:
10533
10534
10535                 SWIG_ADD_MODULE(name language [ files ])
10536                   - Define swig module with given name and specified language
10537                 SWIG_LINK_LIBRARIES(name [ libraries ])
10538                   - Link libraries to swig module
10539
10540              All other macros are for internal use only. To  get  the  actual
10541              name  of the swig module, use: ${SWIG_MODULE_${name}_REAL_NAME}.
10542              Set Source files properties such as CPLUSPLUS and SWIG_FLAGS  to
10543              specify  special  behavior of SWIG. Also global CMAKE_SWIG_FLAGS
10544              can be used to add special flags to all swig calls. Another spe‐
10545              cial  variable  is  CMAKE_SWIG_OUTDIR,  it allows one to specify
10546              where to write all  the  swig  generated  module  (swig  -outdir
10547              option) The name-specific variable SWIG_MODULE_<name>_EXTRA_DEPS
10548              may be used to specify extra dependencies for the generated mod‐
10549              ules.  If  the  source  file generated by swig need some special
10550              flag  you  can  use  set_source_files_properties(  ${swig_gener‐
10551              ated_file_fullname}
10552
10553
10554                      PROPERTIES COMPILE_FLAGS "-bla")
10555
10556
10557       Use_wxWindows
10558              ---------------------------------------------------
10559
10560
10561
10562
10563              This convenience include finds if wxWindows is installed and set
10564              the appropriate libs, incdirs, flags etc. author Jan Woetzel <jw
10565              -at- mip.informatik.uni-kiel.de> (07/2003) USAGE:
10566
10567
10568                 just include Use_wxWindows.cmake
10569                 in your projects CMakeLists.txt
10570
10571              include( ${CMAKE_MODULE_PATH}/Use_wxWindows.cmake)
10572
10573
10574                 if you are sure you need GL then
10575
10576              set(WXWINDOWS_USE_GL 1)
10577
10578
10579                 *before* you include this file.
10580
10581
10582       UsewxWidgets
10583              Convenience include for using wxWidgets library.
10584
10585              Determines if wxWidgets was FOUND and sets the appropriate libs,
10586              incdirs, flags, etc.  INCLUDE_DIRECTORIES  and  LINK_DIRECTORIES
10587              are called.
10588
10589
10590              USAGE
10591
10592
10593                # Note that for MinGW users the order of libs is important!
10594                find_package(wxWidgets REQUIRED net gl core base)
10595                include(${wxWidgets_USE_FILE})
10596                # and for each of your dependent executable/library targets:
10597                target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
10598
10599
10600
10601
10602              DEPRECATED
10603
10604
10605                LINK_LIBRARIES is not called in favor of adding dependencies per target.
10606
10607
10608
10609
10610              AUTHOR
10611
10612
10613                Jan Woetzel <jw -at- mip.informatik.uni-kiel.de>
10614
10615
10616       WriteBasicConfigVersionFile
10617
10618
10619                WRITE_BASIC_CONFIG_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion) )
10620
10621
10622
10623
10624              Deprecated,  see WRITE_BASIC_PACKAGE_VERSION_FILE(), it is iden‐
10625              tical.
10626
10627
10629       Copyright 2000-2012 Kitware, Inc., Insight  Software  Consortium.   All
10630       rights reserved.
10631
10632
10633       Redistribution and use in source and binary forms, with or without mod‐
10634       ification, are permitted provided that  the  following  conditions  are
10635       met:
10636
10637
10638       Redistributions  of source code must retain the above copyright notice,
10639       this list of conditions and the following disclaimer.
10640
10641
10642       Redistributions in binary  form  must  reproduce  the  above  copyright
10643       notice,  this  list  of  conditions and the following disclaimer in the
10644       documentation and/or other materials provided with the distribution.
10645
10646
10647       Neither the names of Kitware, Inc., the  Insight  Software  Consortium,
10648       nor  the  names of their contributors may be used to endorse or promote
10649       products derived from this software without specific prior written per‐
10650       mission.
10651
10652
10653       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
10654       IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT  NOT  LIMITED
10655       TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTIC‐
10656       ULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER  OR
10657       CONTRIBUTORS  BE  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
10658       EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,  BUT  NOT  LIMITED  TO,
10659       PROCUREMENT  OF  SUBSTITUTE  GOODS  OR  SERVICES; LOSS OF USE, DATA, OR
10660       PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY  OF
10661       LIABILITY,  WHETHER  IN  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
10662       NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  OF  THE  USE  OF  THIS
10663       SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10664
10665

SEE ALSO

10667       ccmake(1), cpack(1), ctest(1), cmakecommands(1), cmakecompat(1), cmake‐
10668       modules(1), cmakeprops(1), cmakevars(1)
10669
10670
10671       The following resources are available to get help using CMake:
10672
10673
10674       Home Page
10675              http://www.cmake.org
10676
10677              The primary starting point for learning about CMake.
10678
10679
10680       Frequently Asked Questions
10681              http://www.cmake.org/Wiki/CMake_FAQ
10682
10683              A Wiki is provided containing answers to frequently asked  ques‐
10684              tions.
10685
10686
10687       Online Documentation
10688              http://www.cmake.org/HTML/Documentation.html
10689
10690              Links to available documentation may be found on this web page.
10691
10692
10693       Mailing List
10694              http://www.cmake.org/HTML/MailingLists.html
10695
10696              For  help  and  discussion  about using cmake, a mailing list is
10697              provided at cmake@cmake.org. The list  is  member-post-only  but
10698              one  may  sign  up  on the CMake web page. Please first read the
10699              full documentation at http://www.cmake.org before posting  ques‐
10700              tions to the list.
10701
10702
10703
10704
10705cmake 2.8.12.2                 November 05, 2016               cmakemodules(1)
Impressum