| 
					
				 | 
			
			
				@@ -1,187 +1,276 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#.rst: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ExternalProject 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# --------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Create custom targets to build projects in external trees 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The ``ExternalProject_Add`` function creates a custom target to drive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# download, update/patch, configure, build, install and test steps of an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# external project: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# .. code-block:: cmake 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  ExternalProject_Add(<name>    # Name for custom target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DEPENDS projects...]       # Targets on which the project depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [PREFIX dir]                # Root dir for entire project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LIST_SEPARATOR sep]        # Sep to be replaced by ; in cmd lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TMP_DIR dir]               # Directory to store temporary files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [STAMP_DIR dir]             # Directory to store step timestamps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [EXCLUDE_FROM_ALL 1]        # The "all" target does not depend on this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Download step-------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DOWNLOAD_NAME fname]       # File name to store (if not end of URL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DOWNLOAD_DIR dir]          # Directory to store downloaded files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DOWNLOAD_COMMAND cmd...]   # Command to download source tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DOWNLOAD_NO_PROGRESS 1]    # Disable download progress reports 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CVS_REPOSITORY cvsroot]    # CVSROOT of CVS repository 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CVS_MODULE mod]            # Module to checkout from CVS repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CVS_TAG tag]               # Tag to checkout from CVS repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SVN_REPOSITORY url]        # URL of Subversion repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SVN_REVISION -r<rev>]      # Revision to checkout from Subversion repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SVN_USERNAME john ]        # Username for Subversion checkout and update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SVN_PASSWORD doe ]         # Password for Subversion checkout and update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SVN_TRUST_CERT 1 ]         # Trust the Subversion server site certificate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [GIT_REPOSITORY url]        # URL of git repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [GIT_TAG tag]               # Git branch name, commit id or tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [GIT_SUBMODULES modules...] # Git submodules that shall be updated, all if empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [HG_REPOSITORY url]         # URL of mercurial repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [HG_TAG tag]                # Mercurial branch name, commit id or tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [URL /.../src.tgz]          # Full path or URL of source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [URL_HASH ALGO=value]       # Hash of file at URL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [URL_MD5 md5]               # Equivalent to URL_HASH MD5=md5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TLS_VERIFY bool]           # Should certificate for https be checked 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TLS_CAINFO file]           # Path to a certificate authority file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TIMEOUT seconds]           # Time allowed for file download operations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Update/Patch step---------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [UPDATE_COMMAND cmd...]     # Source work-tree update command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [PATCH_COMMAND cmd...]      # Command to patch downloaded source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Configure step------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [SOURCE_DIR dir]            # Source dir to be used for build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CONFIGURE_COMMAND cmd...]  # Build tree configuration command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_COMMAND /.../cmake]  # Specify alternative cmake executable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_GENERATOR gen]       # Specify generator for native build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_GENERATOR_PLATFORM p] # Generator-specific platform name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_GENERATOR_TOOLSET t] # Generator-specific toolset name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_ARGS args...]        # Arguments to CMake command line 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [CMAKE_CACHE_ARGS args...]  # Initial cache arguments, of the form -Dvar:string=on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Build step----------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [BINARY_DIR dir]            # Specify build dir location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [BUILD_COMMAND cmd...]      # Command to drive the native build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [BUILD_IN_SOURCE 1]         # Use source dir for build dir 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [BUILD_ALWAYS 1]            # No stamp file, build step always runs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Install step--------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [INSTALL_DIR dir]           # Installation prefix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [INSTALL_COMMAND cmd...]    # Command to drive install after build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Test step------------------ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TEST_BEFORE_INSTALL 1]     # Add test step executed before install step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TEST_AFTER_INSTALL 1]      # Add test step executed after install step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [TEST_COMMAND cmd...]       # Command to drive test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Output logging------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_DOWNLOAD 1]            # Wrap download in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_UPDATE 1]              # Wrap update in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_CONFIGURE 1]           # Wrap configure in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_BUILD 1]               # Wrap build in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_TEST 1]                # Wrap test in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG_INSTALL 1]             # Wrap install in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#   #--Custom targets------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [STEP_TARGETS st1 st2 ...]  # Generate custom targets for these steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The ``*_DIR`` options specify directories for the project, with default 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# directories computed as follows.  If the ``PREFIX`` option is given to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add()`` or the ``EP_PREFIX`` directory property is set, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# then an external project is built and installed under the specified prefix:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  TMP_DIR      = <prefix>/tmp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  STAMP_DIR    = <prefix>/src/<name>-stamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  DOWNLOAD_DIR = <prefix>/src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  SOURCE_DIR   = <prefix>/src/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  BINARY_DIR   = <prefix>/src/<name>-build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  INSTALL_DIR  = <prefix> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Otherwise, if the ``EP_BASE`` directory property is set then components 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# of an external project are stored under the specified base:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  TMP_DIR      = <base>/tmp/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  STAMP_DIR    = <base>/Stamp/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  DOWNLOAD_DIR = <base>/Download/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  SOURCE_DIR   = <base>/Source/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  BINARY_DIR   = <base>/Build/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  INSTALL_DIR  = <base>/Install/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If no ``PREFIX``, ``EP_PREFIX``, or ``EP_BASE`` is specified then the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# default is to set ``PREFIX`` to ``<name>-prefix``.  Relative paths are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# interpreted with respect to the build directory corresponding to the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# source directory in which ``ExternalProject_Add`` is invoked. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If ``SOURCE_DIR`` is explicitly set to an existing directory the project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# will be built from it.  Otherwise a download step must be specified 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# using one of the ``DOWNLOAD_COMMAND``, ``CVS_*``, ``SVN_*``, or ``URL`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# options.  The ``URL`` option may refer locally to a directory or source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# tarball, or refer to a remote tarball (e.g. ``http://.../src.tgz``). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The ``ExternalProject_Add_Step`` function adds a custom step to an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# external project: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# .. code-block:: cmake 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  ExternalProject_Add_Step(<name> <step> # Names of project and custom step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [COMMAND cmd...]        # Command line invoked by this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [COMMENT "text..."]     # Text printed when step executes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DEPENDEES steps...]    # Steps on which this step depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DEPENDERS steps...]    # Steps that depend on this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [DEPENDS files...]      # Files on which this step depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [ALWAYS 1]              # No stamp file, step always runs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [EXCLUDE_FROM_MAIN 1]   # Main target does not depend on this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [WORKING_DIRECTORY dir] # Working directory for command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    [LOG 1]                 # Wrap step in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The command line, comment, and working directory of every standard and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# custom step is processed to replace tokens ``<SOURCE_DIR>``, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``<BINARY_DIR>``, ``<INSTALL_DIR>``, and ``<TMP_DIR>`` with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# corresponding property values. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Any builtin step that specifies a ``<step>_COMMAND cmd...`` or custom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# step that specifies a ``COMMAND cmd...`` may specify additional command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# lines using the form ``COMMAND cmd...``.  At build time the commands 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# will be executed in order and aborted if any one fails.  For example:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  ... BUILD_COMMAND make COMMAND echo done ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# specifies to run ``make`` and then ``echo done`` during the build step. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Whether the current working directory is preserved between commands is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# not defined.  Behavior of shell operators like ``&&`` is not defined. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The ``ExternalProject_Get_Property`` function retrieves external project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# target properties:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  ExternalProject_Get_Property(<name> [prop1 [prop2 [...]]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# It stores property values in variables of the same name.  Property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# names correspond to the keyword argument names of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# The ``ExternalProject_Add_StepTargets`` function generates custom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# targets for the steps listed:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  ExternalProject_Add_StepTargets(<name> [step1 [step2 [...]]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If ``STEP_TARGETS`` is set then ``ExternalProject_Add_StepTargets`` is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# automatically called at the end of matching calls to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add_Step``.  Pass ``STEP_TARGETS`` explicitly to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# individual ``ExternalProject_Add`` calls, or implicitly to all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add`` calls by setting the directory property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``EP_STEP_TARGETS``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If ``STEP_TARGETS`` is not set, clients may still manually call 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add_StepTargets`` after calling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# ``ExternalProject_Add`` or ``ExternalProject_Add_Step``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# This functionality is provided to make it easy to drive the steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# independently of each other by specifying targets on build command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# lines.  For example, you may be submitting to a sub-project based 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# dashboard, where you want to drive the configure portion of the build, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# then submit to the dashboard, followed by the build portion, followed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# by tests.  If you invoke a custom target that depends on a step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# halfway through the step dependency chain, then all the previous steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# will also run to ensure everything is up to date. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# For example, to drive configure, build and test steps independently 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# for each ``ExternalProject_Add`` call in your project, write the following 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# line prior to any ``ExternalProject_Add`` calls in your ``CMakeLists.txt`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# file:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#[=======================================================================[.rst: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Create custom targets to build projects in external trees 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. command:: ExternalProject_Add 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The ``ExternalProject_Add`` function creates a custom target to drive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  download, update/patch, configure, build, install and test steps of an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  external project:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ExternalProject_Add(<name> [<option>...]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  General options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DEPENDS <projects>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Targets on which the project depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``PREFIX <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Root dir for entire project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LIST_SEPARATOR <sep>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Sep to be replaced by ; in cmd lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TMP_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Directory to store temporary files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``STAMP_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Directory to store step timestamps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``EXCLUDE_FROM_ALL 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    The "all" target does not depend on this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Download step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DOWNLOAD_NAME <fname>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    File name to store (if not end of URL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DOWNLOAD_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Directory to store downloaded files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DOWNLOAD_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command to download source tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DOWNLOAD_NO_PROGRESS 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Disable download progress reports 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CVS_REPOSITORY <cvsroot>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CVSROOT of CVS repository 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CVS_MODULE <mod>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Module to checkout from CVS repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CVS_TAG <tag>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tag to checkout from CVS repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SVN_REPOSITORY <url>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    URL of Subversion repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SVN_REVISION -r<rev>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Revision to checkout from Subversion repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SVN_USERNAME <username>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Username for Subversion checkout and update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SVN_PASSWORD <password>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Password for Subversion checkout and update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SVN_TRUST_CERT 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Trust the Subversion server site certificate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``GIT_REPOSITORY <url>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    URL of git repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``GIT_TAG <tag>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Git branch name, commit id or tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``GIT_SUBMODULES <module>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Git submodules that shall be updated, all if empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``HG_REPOSITORY <url>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    URL of mercurial repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``HG_TAG <tag>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Mercurial branch name, commit id or tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``URL /.../src.tgz`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Full path or URL of source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``URL_HASH ALGO=value`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Hash of file at URL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``URL_MD5 md5`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Equivalent to URL_HASH MD5=md5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TLS_VERIFY <bool>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Should certificate for https be checked 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TLS_CAINFO <file>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Path to a certificate authority file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TIMEOUT <seconds>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Time allowed for file download operations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Update/Patch step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``UPDATE_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Source work-tree update command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``PATCH_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command to patch downloaded source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Configure step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``SOURCE_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Source dir to be used for build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CONFIGURE_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Build tree configuration command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_COMMAND /.../cmake`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Specify alternative cmake executable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_GENERATOR <gen>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Specify generator for native build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_GENERATOR_PLATFORM <platform>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Generator-specific platform name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_GENERATOR_TOOLSET <toolset>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Generator-specific toolset name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_ARGS <arg>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Arguments to CMake command line 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``CMAKE_CACHE_ARGS <arg>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Initial cache arguments, of the form ``-Dvar:string=on`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Build step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``BINARY_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Specify build dir location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``BUILD_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command to drive the native build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``BUILD_IN_SOURCE 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Use source dir for build dir 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``BUILD_ALWAYS 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    No stamp file, build step always runs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Install step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``INSTALL_DIR <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Installation prefix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``INSTALL_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command to drive install after build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Test step options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TEST_BEFORE_INSTALL 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Add test step executed before install step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TEST_AFTER_INSTALL 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Add test step executed after install step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``TEST_COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command to drive test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Output logging options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_DOWNLOAD 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap download in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_UPDATE 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap update in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_CONFIGURE 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap configure in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_BUILD 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap build in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_TEST 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap test in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG_INSTALL 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap install in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Other options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``STEP_TARGETS <step-target>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Generate custom targets for these steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The ``*_DIR`` options specify directories for the project, with default 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  directories computed as follows.  If the ``PREFIX`` option is given to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``ExternalProject_Add()`` or the ``EP_PREFIX`` directory property is set, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  then an external project is built and installed under the specified prefix:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   TMP_DIR      = <prefix>/tmp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   STAMP_DIR    = <prefix>/src/<name>-stamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   DOWNLOAD_DIR = <prefix>/src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   SOURCE_DIR   = <prefix>/src/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   BINARY_DIR   = <prefix>/src/<name>-build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   INSTALL_DIR  = <prefix> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Otherwise, if the ``EP_BASE`` directory property is set then components 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  of an external project are stored under the specified base:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   TMP_DIR      = <base>/tmp/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   STAMP_DIR    = <base>/Stamp/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   DOWNLOAD_DIR = <base>/Download/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   SOURCE_DIR   = <base>/Source/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   BINARY_DIR   = <base>/Build/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   INSTALL_DIR  = <base>/Install/<name> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  If no ``PREFIX``, ``EP_PREFIX``, or ``EP_BASE`` is specified then the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  default is to set ``PREFIX`` to ``<name>-prefix``.  Relative paths are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  interpreted with respect to the build directory corresponding to the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  source directory in which ``ExternalProject_Add`` is invoked. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  If ``SOURCE_DIR`` is explicitly set to an existing directory the project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  will be built from it.  Otherwise a download step must be specified 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  using one of the ``DOWNLOAD_COMMAND``, ``CVS_*``, ``SVN_*``, or ``URL`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  options.  The ``URL`` option may refer locally to a directory or source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  tarball, or refer to a remote tarball (e.g. ``http://.../src.tgz``). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. command:: ExternalProject_Add_Step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The ``ExternalProject_Add_Step`` function adds a custom step to an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  external project:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ExternalProject_Add_Step(<name> <step> [<option>...]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Options are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``COMMAND <cmd>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Command line invoked by this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``COMMENT "<text>..."`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Text printed when step executes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DEPENDEES <step>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Steps on which this step depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DEPENDERS <step>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Steps that depend on this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``DEPENDS <file>...`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Files on which this step depends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``ALWAYS 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    No stamp file, step always runs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``EXCLUDE_FROM_MAIN 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Main target does not depend on this step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``WORKING_DIRECTORY <dir>`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Working directory for command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``LOG 1`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Wrap step in script to log output 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The command line, comment, and working directory of every standard and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  custom step is processed to replace tokens ``<SOURCE_DIR>``, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``<BINARY_DIR>``, ``<INSTALL_DIR>``, and ``<TMP_DIR>`` with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  corresponding property values. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Any builtin step that specifies a ``<step>_COMMAND cmd...`` or custom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+step that specifies a ``COMMAND cmd...`` may specify additional command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+lines using the form ``COMMAND cmd...``.  At build time the commands 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+will be executed in order and aborted if any one fails.  For example:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ ... BUILD_COMMAND make COMMAND echo done ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+specifies to run ``make`` and then ``echo done`` during the build step. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Whether the current working directory is preserved between commands is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+not defined.  Behavior of shell operators like ``&&`` is not defined. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. command:: ExternalProject_Get_Property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The ``ExternalProject_Get_Property`` function retrieves external project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  target properties:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ExternalProject_Get_Property(<name> [prop1 [prop2 [...]]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  It stores property values in variables of the same name.  Property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  names correspond to the keyword argument names of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ``ExternalProject_Add``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. command:: ExternalProject_Add_StepTargets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  The ``ExternalProject_Add_StepTargets`` function generates custom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  targets for the steps listed:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ExternalProject_Add_StepTargets(<name> [step1 [step2 [...]]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If ``STEP_TARGETS`` is set then ``ExternalProject_Add_StepTargets`` is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+automatically called at the end of matching calls to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``ExternalProject_Add_Step``.  Pass ``STEP_TARGETS`` explicitly to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+individual ``ExternalProject_Add`` calls, or implicitly to all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``ExternalProject_Add`` calls by setting the directory property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``EP_STEP_TARGETS``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If ``STEP_TARGETS`` is not set, clients may still manually call 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``ExternalProject_Add_StepTargets`` after calling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``ExternalProject_Add`` or ``ExternalProject_Add_Step``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This functionality is provided to make it easy to drive the steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+independently of each other by specifying targets on build command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+lines.  For example, you may be submitting to a sub-project based 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+dashboard, where you want to drive the configure portion of the build, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+then submit to the dashboard, followed by the build portion, followed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+by tests.  If you invoke a custom target that depends on a step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+halfway through the step dependency chain, then all the previous steps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+will also run to ensure everything is up to date. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+For example, to drive configure, build and test steps independently 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for each ``ExternalProject_Add`` call in your project, write the following 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+line prior to any ``ExternalProject_Add`` calls in your ``CMakeLists.txt`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+file:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#]=======================================================================] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #============================================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Copyright 2008-2013 Kitware, Inc. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -200,9 +289,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 math(EXPR _ep_documentation_line_count "${CMAKE_CURRENT_LIST_LINE} - 16") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 file(STRINGS "${CMAKE_CURRENT_LIST_FILE}" lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      LIMIT_COUNT ${_ep_documentation_line_count} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     REGEX "^#  (  \\[[A-Z0-9_]+ [^]]*\\] +#.*$|[A-Za-z0-9_]+\\()") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     REGEX "^\\.\\. command:: [A-Za-z0-9_]+|^  ``[A-Z0-9_]+ .*``$") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 foreach(line IN LISTS lines) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if("${line}" MATCHES "^#  ([A-Za-z0-9_]+)\\(") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if("${line}" MATCHES "^\\.\\. command:: ([A-Za-z0-9_]+)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(_ep_func) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       set(_ep_keywords_${_ep_func} "${_ep_keywords_${_ep_func}})$") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endif() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,8 +299,8 @@ foreach(line IN LISTS lines) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     #message("function [${_ep_func}]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     set(_ep_keywords_${_ep_func} "^(") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     set(_ep_keyword_sep) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    string(REGEX REPLACE "^#    \\[([A-Z0-9_]+) .*" "\\1" _ep_key "${line}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  elseif("${line}" MATCHES "^  ``([A-Z0-9_]+) .*``$") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    set(_ep_key "${CMAKE_MATCH_1}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     #message("  keyword [${_ep_key}]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     set(_ep_keywords_${_ep_func} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       "${_ep_keywords_${_ep_func}}${_ep_keyword_sep}${_ep_key}") 
			 |