| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| |
| <title>add_custom_target — CMake 3.8.2 Documentation</title> |
| |
| |
| <link rel="stylesheet" href="../_static/cmake.css" type="text/css" /> |
| <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> |
| |
| <script type="text/javascript"> |
| var DOCUMENTATION_OPTIONS = { |
| URL_ROOT: '../', |
| VERSION: '3.8.2', |
| COLLAPSE_INDEX: false, |
| FILE_SUFFIX: '.html', |
| HAS_SOURCE: true, |
| SOURCELINK_SUFFIX: '.txt' |
| }; |
| </script> |
| <script type="text/javascript" src="../_static/jquery.js"></script> |
| <script type="text/javascript" src="../_static/underscore.js"></script> |
| <script type="text/javascript" src="../_static/doctools.js"></script> |
| <link rel="shortcut icon" href="../_static/cmake-favicon.ico"/> |
| <link rel="index" title="Index" href="../genindex.html" /> |
| <link rel="search" title="Search" href="../search.html" /> |
| <link rel="next" title="add_definitions" href="add_definitions.html" /> |
| <link rel="prev" title="add_custom_command" href="add_custom_command.html" /> |
| </head> |
| <body role="document"> |
| <div class="related" role="navigation" aria-label="related navigation"> |
| <h3>Navigation</h3> |
| <ul> |
| <li class="right" style="margin-right: 10px"> |
| <a href="../genindex.html" title="General Index" |
| accesskey="I">index</a></li> |
| <li class="right" > |
| <a href="add_definitions.html" title="add_definitions" |
| accesskey="N">next</a> |</li> |
| <li class="right" > |
| <a href="add_custom_command.html" title="add_custom_command" |
| accesskey="P">previous</a> |</li> |
| <li> |
| <img src="../_static/cmake-logo-16.png" alt="" |
| style="vertical-align: middle; margin-top: -2px" /> |
| </li> |
| <li> |
| <a href="https://cmake.org/">CMake</a> » |
| </li> |
| <li> |
| <a href="../index.html">3.8.2 Documentation</a> » |
| </li> |
| |
| <li class="nav-item nav-item-1"><a href="../manual/cmake-commands.7.html" accesskey="U">cmake-commands(7)</a> »</li> |
| </ul> |
| </div> |
| |
| <div class="document"> |
| <div class="documentwrapper"> |
| <div class="bodywrapper"> |
| <div class="body" role="main"> |
| |
| <div class="section" id="add-custom-target"> |
| <span id="command:add_custom_target"></span><h1>add_custom_target<a class="headerlink" href="#add-custom-target" title="Permalink to this headline">ΒΆ</a></h1> |
| <p>Add a target with no output so it will always be built.</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">add_custom_target</span><span class="p">(</span><span class="n">Name</span> <span class="p">[</span><span class="n">ALL</span><span class="p">]</span> <span class="p">[</span><span class="n">command1</span> <span class="p">[</span><span class="n">args1</span><span class="o">...</span><span class="p">]]</span> |
| <span class="p">[</span><span class="n">COMMAND</span> <span class="n">command2</span> <span class="p">[</span><span class="n">args2</span><span class="o">...</span><span class="p">]</span> <span class="o">...</span><span class="p">]</span> |
| <span class="p">[</span><span class="n">DEPENDS</span> <span class="n">depend</span> <span class="n">depend</span> <span class="n">depend</span> <span class="o">...</span> <span class="p">]</span> |
| <span class="p">[</span><span class="n">BYPRODUCTS</span> <span class="p">[</span><span class="n">files</span><span class="o">...</span><span class="p">]]</span> |
| <span class="p">[</span><span class="n">WORKING_DIRECTORY</span> <span class="nb">dir</span><span class="p">]</span> |
| <span class="p">[</span><span class="n">COMMENT</span> <span class="n">comment</span><span class="p">]</span> |
| <span class="p">[</span><span class="n">VERBATIM</span><span class="p">]</span> <span class="p">[</span><span class="n">USES_TERMINAL</span><span class="p">]</span> |
| <span class="p">[</span><span class="n">COMMAND_EXPAND_LISTS</span><span class="p">]</span> |
| <span class="p">[</span><span class="n">SOURCES</span> <span class="n">src1</span> <span class="p">[</span><span class="n">src2</span><span class="o">...</span><span class="p">]])</span> |
| </pre></div> |
| </div> |
| <p>Adds a target with the given name that executes the given commands. |
| The target has no output file and is <em>always considered out of date</em> |
| even if the commands try to create a file with the name of the target. |
| Use the <span class="target" id="index-0-command:add_custom_command"></span><a class="reference internal" href="add_custom_command.html#command:add_custom_command" title="add_custom_command"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_custom_command()</span></code></a> command to generate a file with |
| dependencies. By default nothing depends on the custom target. Use |
| the <span class="target" id="index-0-command:add_dependencies"></span><a class="reference internal" href="add_dependencies.html#command:add_dependencies" title="add_dependencies"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_dependencies()</span></code></a> command to add dependencies to or |
| from other targets.</p> |
| <p>The options are:</p> |
| <dl class="docutils"> |
| <dt><code class="docutils literal"><span class="pre">ALL</span></code></dt> |
| <dd>Indicate that this target should be added to the default build |
| target so that it will be run every time (the command cannot be |
| called <code class="docutils literal"><span class="pre">ALL</span></code>).</dd> |
| <dt><code class="docutils literal"><span class="pre">BYPRODUCTS</span></code></dt> |
| <dd><p class="first">Specify the files the command is expected to produce but whose |
| modification time may or may not be updated on subsequent builds. |
| If a byproduct name is a relative path it will be interpreted |
| relative to the build tree directory corresponding to the |
| current source directory. |
| Each byproduct file will be marked with the <span class="target" id="index-0-prop_sf:GENERATED"></span><a class="reference internal" href="../prop_sf/GENERATED.html#prop_sf:GENERATED" title="GENERATED"><code class="xref cmake cmake-prop_sf docutils literal"><span class="pre">GENERATED</span></code></a> |
| source file property automatically.</p> |
| <p>Explicit specification of byproducts is supported by the |
| <span class="target" id="index-0-generator:Ninja"></span><a class="reference internal" href="../generator/Ninja.html#generator:Ninja" title="Ninja"><code class="xref cmake cmake-generator docutils literal"><span class="pre">Ninja</span></code></a> generator to tell the <code class="docutils literal"><span class="pre">ninja</span></code> build tool |
| how to regenerate byproducts when they are missing. It is |
| also useful when other build rules (e.g. custom commands) |
| depend on the byproducts. Ninja requires a build rule for any |
| generated file on which another rule depends even if there are |
| order-only dependencies to ensure the byproducts will be |
| available before their dependents build.</p> |
| <p class="last">The <code class="docutils literal"><span class="pre">BYPRODUCTS</span></code> option is ignored on non-Ninja generators |
| except to mark byproducts <code class="docutils literal"><span class="pre">GENERATED</span></code>.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">COMMAND</span></code></dt> |
| <dd><p class="first">Specify the command-line(s) to execute at build time. |
| If more than one <code class="docutils literal"><span class="pre">COMMAND</span></code> is specified they will be executed in order, |
| but <em>not</em> necessarily composed into a stateful shell or batch script. |
| (To run a full script, use the <span class="target" id="index-0-command:configure_file"></span><a class="reference internal" href="configure_file.html#command:configure_file" title="configure_file"><code class="xref cmake cmake-command docutils literal"><span class="pre">configure_file()</span></code></a> command or the |
| <span class="target" id="index-0-command:file"></span><a class="reference internal" href="file.html#command:file" title="file"><code class="xref cmake cmake-command docutils literal"><span class="pre">file(GENERATE)</span></code></a> command to create it, and then specify |
| a <code class="docutils literal"><span class="pre">COMMAND</span></code> to launch it.)</p> |
| <p>If <code class="docutils literal"><span class="pre">COMMAND</span></code> specifies an executable target name (created by the |
| <span class="target" id="index-0-command:add_executable"></span><a class="reference internal" href="add_executable.html#command:add_executable" title="add_executable"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_executable()</span></code></a> command) it will automatically be replaced |
| by the location of the executable created at build time. If set, the |
| <span class="target" id="index-0-prop_tgt:CROSSCOMPILING_EMULATOR"></span><a class="reference internal" href="../prop_tgt/CROSSCOMPILING_EMULATOR.html#prop_tgt:CROSSCOMPILING_EMULATOR" title="CROSSCOMPILING_EMULATOR"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">CROSSCOMPILING_EMULATOR</span></code></a> executable target property will |
| also be prepended to the command to allow the executable to run on |
| the host. |
| Additionally a target-level dependency will be added so that the |
| executable target will be built before this custom target.</p> |
| <p>Arguments to <code class="docutils literal"><span class="pre">COMMAND</span></code> may use |
| <span class="target" id="index-0-manual:cmake-generator-expressions(7)"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)" title="cmake-generator-expressions(7)"><code class="xref cmake cmake-manual docutils literal"><span class="pre">generator</span> <span class="pre">expressions</span></code></a>. |
| References to target names in generator expressions imply target-level |
| dependencies.</p> |
| <p class="last">The command and arguments are optional and if not specified an empty |
| target will be created.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">COMMENT</span></code></dt> |
| <dd>Display the given message before the commands are executed at |
| build time.</dd> |
| <dt><code class="docutils literal"><span class="pre">DEPENDS</span></code></dt> |
| <dd><p class="first">Reference files and outputs of custom commands created with |
| <span class="target" id="index-1-command:add_custom_command"></span><a class="reference internal" href="add_custom_command.html#command:add_custom_command" title="add_custom_command"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_custom_command()</span></code></a> command calls in the same directory |
| (<code class="docutils literal"><span class="pre">CMakeLists.txt</span></code> file). They will be brought up to date when |
| the target is built.</p> |
| <p class="last">Use the <span class="target" id="index-1-command:add_dependencies"></span><a class="reference internal" href="add_dependencies.html#command:add_dependencies" title="add_dependencies"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_dependencies()</span></code></a> command to add dependencies |
| on other targets.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">COMMAND_EXPAND_LISTS</span></code></dt> |
| <dd>Lists in <code class="docutils literal"><span class="pre">COMMAND</span></code> arguments will be expanded, including those |
| created with |
| <span class="target" id="index-1-manual:cmake-generator-expressions(7)"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)" title="cmake-generator-expressions(7)"><code class="xref cmake cmake-manual docutils literal"><span class="pre">generator</span> <span class="pre">expressions</span></code></a>, |
| allowing <code class="docutils literal"><span class="pre">COMMAND</span></code> arguments such as |
| <code class="docutils literal"><span class="pre">${CC}</span> <span class="pre">"-I$<JOIN:$<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>,;-I>"</span> <span class="pre">foo.cc</span></code> |
| to be properly expanded.</dd> |
| <dt><code class="docutils literal"><span class="pre">SOURCES</span></code></dt> |
| <dd>Specify additional source files to be included in the custom target. |
| Specified source files will be added to IDE project files for |
| convenience in editing even if they have no build rules.</dd> |
| <dt><code class="docutils literal"><span class="pre">VERBATIM</span></code></dt> |
| <dd>All arguments to the commands will be escaped properly for the |
| build tool so that the invoked command receives each argument |
| unchanged. Note that one level of escapes is still used by the |
| CMake language processor before <code class="docutils literal"><span class="pre">add_custom_target</span></code> even sees |
| the arguments. Use of <code class="docutils literal"><span class="pre">VERBATIM</span></code> is recommended as it enables |
| correct behavior. When <code class="docutils literal"><span class="pre">VERBATIM</span></code> is not given the behavior |
| is platform specific because there is no protection of |
| tool-specific special characters.</dd> |
| <dt><code class="docutils literal"><span class="pre">USES_TERMINAL</span></code></dt> |
| <dd>The command will be given direct access to the terminal if possible. |
| With the <span class="target" id="index-1-generator:Ninja"></span><a class="reference internal" href="../generator/Ninja.html#generator:Ninja" title="Ninja"><code class="xref cmake cmake-generator docutils literal"><span class="pre">Ninja</span></code></a> generator, this places the command in |
| the <code class="docutils literal"><span class="pre">console</span></code> <span class="target" id="index-0-prop_gbl:JOB_POOLS"></span><a class="reference internal" href="../prop_gbl/JOB_POOLS.html#prop_gbl:JOB_POOLS" title="JOB_POOLS"><code class="xref cmake cmake-prop_gbl docutils literal"><span class="pre">pool</span></code></a>.</dd> |
| <dt><code class="docutils literal"><span class="pre">WORKING_DIRECTORY</span></code></dt> |
| <dd>Execute the command with the given current working directory. |
| If it is a relative path it will be interpreted relative to the |
| build tree directory corresponding to the current source directory.</dd> |
| </dl> |
| </div> |
| |
| |
| </div> |
| </div> |
| </div> |
| <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> |
| <div class="sphinxsidebarwrapper"> |
| <h4>Previous topic</h4> |
| <p class="topless"><a href="add_custom_command.html" |
| title="previous chapter">add_custom_command</a></p> |
| <h4>Next topic</h4> |
| <p class="topless"><a href="add_definitions.html" |
| title="next chapter">add_definitions</a></p> |
| <div role="note" aria-label="source link"> |
| <h3>This Page</h3> |
| <ul class="this-page-menu"> |
| <li><a href="../_sources/command/add_custom_target.rst.txt" |
| rel="nofollow">Show Source</a></li> |
| </ul> |
| </div> |
| <div id="searchbox" style="display: none" role="search"> |
| <h3>Quick search</h3> |
| <form class="search" action="../search.html" method="get"> |
| <div><input type="text" name="q" /></div> |
| <div><input type="submit" value="Go" /></div> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </form> |
| </div> |
| <script type="text/javascript">$('#searchbox').show(0);</script> |
| </div> |
| </div> |
| <div class="clearer"></div> |
| </div> |
| <div class="related" role="navigation" aria-label="related navigation"> |
| <h3>Navigation</h3> |
| <ul> |
| <li class="right" style="margin-right: 10px"> |
| <a href="../genindex.html" title="General Index" |
| >index</a></li> |
| <li class="right" > |
| <a href="add_definitions.html" title="add_definitions" |
| >next</a> |</li> |
| <li class="right" > |
| <a href="add_custom_command.html" title="add_custom_command" |
| >previous</a> |</li> |
| <li> |
| <img src="../_static/cmake-logo-16.png" alt="" |
| style="vertical-align: middle; margin-top: -2px" /> |
| </li> |
| <li> |
| <a href="https://cmake.org/">CMake</a> » |
| </li> |
| <li> |
| <a href="../index.html">3.8.2 Documentation</a> » |
| </li> |
| |
| <li class="nav-item nav-item-1"><a href="../manual/cmake-commands.7.html" >cmake-commands(7)</a> »</li> |
| </ul> |
| </div> |
| <div class="footer" role="contentinfo"> |
| © Copyright 2000-2017 Kitware, Inc. and Contributors. |
| Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2. |
| </div> |
| </body> |
| </html> |