| <!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>cmake-generator-expressions(7) — 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="cmake-generators(7)" href="cmake-generators.7.html" /> |
| <link rel="prev" title="cmake-developer(7)" href="cmake-developer.7.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="cmake-generators.7.html" title="cmake-generators(7)" |
| accesskey="N">next</a> |</li> |
| <li class="right" > |
| <a href="cmake-developer.7.html" title="cmake-developer(7)" |
| 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> |
| |
| </ul> |
| </div> |
| |
| <div class="document"> |
| <div class="documentwrapper"> |
| <div class="bodywrapper"> |
| <div class="body" role="main"> |
| |
| <span class="target" id="manual:cmake-generator-expressions(7)"></span><div class="section" id="cmake-generator-expressions-7"> |
| <h1><a class="toc-backref" href="#id1">cmake-generator-expressions(7)</a><a class="headerlink" href="#cmake-generator-expressions-7" title="Permalink to this headline">¶</a></h1> |
| <div class="contents topic" id="contents"> |
| <p class="topic-title first">Contents</p> |
| <ul class="simple"> |
| <li><a class="reference internal" href="#cmake-generator-expressions-7" id="id1">cmake-generator-expressions(7)</a><ul> |
| <li><a class="reference internal" href="#introduction" id="id2">Introduction</a></li> |
| <li><a class="reference internal" href="#logical-expressions" id="id3">Logical Expressions</a></li> |
| <li><a class="reference internal" href="#informational-expressions" id="id4">Informational Expressions</a></li> |
| <li><a class="reference internal" href="#output-expressions" id="id5">Output Expressions</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="section" id="introduction"> |
| <h2><a class="toc-backref" href="#id2">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2> |
| <p>Generator expressions are evaluated during build system generation to produce |
| information specific to each build configuration.</p> |
| <p>Generator expressions are allowed in the context of many target properties, |
| such as <span class="target" id="index-0-prop_tgt:LINK_LIBRARIES"></span><a class="reference internal" href="../prop_tgt/LINK_LIBRARIES.html#prop_tgt:LINK_LIBRARIES" title="LINK_LIBRARIES"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">LINK_LIBRARIES</span></code></a>, <span class="target" id="index-0-prop_tgt:INCLUDE_DIRECTORIES"></span><a class="reference internal" href="../prop_tgt/INCLUDE_DIRECTORIES.html#prop_tgt:INCLUDE_DIRECTORIES" title="INCLUDE_DIRECTORIES"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">INCLUDE_DIRECTORIES</span></code></a>, |
| <span class="target" id="index-0-prop_tgt:COMPILE_DEFINITIONS"></span><a class="reference internal" href="../prop_tgt/COMPILE_DEFINITIONS.html#prop_tgt:COMPILE_DEFINITIONS" title="COMPILE_DEFINITIONS"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">COMPILE_DEFINITIONS</span></code></a> and others. They may also be used when using |
| commands to populate those properties, such as <span class="target" id="index-0-command:target_link_libraries"></span><a class="reference internal" href="../command/target_link_libraries.html#command:target_link_libraries" title="target_link_libraries"><code class="xref cmake cmake-command docutils literal"><span class="pre">target_link_libraries()</span></code></a>, |
| <span class="target" id="index-0-command:target_include_directories"></span><a class="reference internal" href="../command/target_include_directories.html#command:target_include_directories" title="target_include_directories"><code class="xref cmake cmake-command docutils literal"><span class="pre">target_include_directories()</span></code></a>, <span class="target" id="index-0-command:target_compile_definitions"></span><a class="reference internal" href="../command/target_compile_definitions.html#command:target_compile_definitions" title="target_compile_definitions"><code class="xref cmake cmake-command docutils literal"><span class="pre">target_compile_definitions()</span></code></a> |
| and others.</p> |
| <p>This means that they enable conditional linking, conditional |
| definitions used when compiling, and conditional include directories and |
| more. The conditions may be based on the build configuration, target |
| properties, platform information or any other queryable information.</p> |
| </div> |
| <div class="section" id="logical-expressions"> |
| <h2><a class="toc-backref" href="#id3">Logical Expressions</a><a class="headerlink" href="#logical-expressions" title="Permalink to this headline">¶</a></h2> |
| <p>Logical expressions are used to create conditional output. The basic |
| expressions are the <code class="docutils literal"><span class="pre">0</span></code> and <code class="docutils literal"><span class="pre">1</span></code> expressions. Because other logical |
| expressions evaluate to either <code class="docutils literal"><span class="pre">0</span></code> or <code class="docutils literal"><span class="pre">1</span></code>, they can be composed to |
| create conditional output:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span>$<$<CONFIG:Debug>:DEBUG_MODE> |
| </pre></div> |
| </div> |
| <p>expands to <code class="docutils literal"><span class="pre">DEBUG_MODE</span></code> when the <code class="docutils literal"><span class="pre">Debug</span></code> configuration is used, and |
| otherwise expands to nothing.</p> |
| <p>Available logical expressions are:</p> |
| <dl class="docutils"> |
| <dt><code class="docutils literal"><span class="pre">$<BOOL:...></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the <code class="docutils literal"><span class="pre">...</span></code> is true, else <code class="docutils literal"><span class="pre">0</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<AND:?[,?]...></span></code></dt> |
| <dd><p class="first"><code class="docutils literal"><span class="pre">1</span></code> if all <code class="docutils literal"><span class="pre">?</span></code> are <code class="docutils literal"><span class="pre">1</span></code>, else <code class="docutils literal"><span class="pre">0</span></code></p> |
| <p class="last">The <code class="docutils literal"><span class="pre">?</span></code> must always be either <code class="docutils literal"><span class="pre">0</span></code> or <code class="docutils literal"><span class="pre">1</span></code> in boolean expressions.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">$<OR:?[,?]...></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">0</span></code> if all <code class="docutils literal"><span class="pre">?</span></code> are <code class="docutils literal"><span class="pre">0</span></code>, else <code class="docutils literal"><span class="pre">1</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<NOT:?></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">0</span></code> if <code class="docutils literal"><span class="pre">?</span></code> is <code class="docutils literal"><span class="pre">1</span></code>, else <code class="docutils literal"><span class="pre">1</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<IF:?,true-value...,false-value...>`</span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">true-value...</span></code> if <code class="docutils literal"><span class="pre">?</span></code> is <code class="docutils literal"><span class="pre">1</span></code>, <code class="docutils literal"><span class="pre">false-value...</span></code> if <code class="docutils literal"><span class="pre">?</span></code> is <code class="docutils literal"><span class="pre">0</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<STREQUAL:a,b></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">a</span></code> is STREQUAL <code class="docutils literal"><span class="pre">b</span></code>, else <code class="docutils literal"><span class="pre">0</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<EQUAL:a,b></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">a</span></code> is EQUAL <code class="docutils literal"><span class="pre">b</span></code> in a numeric comparison, else <code class="docutils literal"><span class="pre">0</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<CONFIG:cfg></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if config is <code class="docutils literal"><span class="pre">cfg</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>. This is a case-insensitive comparison. |
| The mapping in <span class="target" id="index-0-prop_tgt:MAP_IMPORTED_CONFIG_<CONFIG>"></span><a class="reference internal" href="../prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.html#prop_tgt:MAP_IMPORTED_CONFIG_<CONFIG>" title="MAP_IMPORTED_CONFIG_<CONFIG>"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">MAP_IMPORTED_CONFIG_<CONFIG></span></code></a> is also considered by |
| this expression when it is evaluated on a property on an <span class="target" id="index-0-prop_tgt:IMPORTED"></span><a class="reference internal" href="../prop_tgt/IMPORTED.html#prop_tgt:IMPORTED" title="IMPORTED"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">IMPORTED</span></code></a> |
| target.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<PLATFORM_ID:comp></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the CMake-id of the platform matches <code class="docutils literal"><span class="pre">comp</span></code>, otherwise <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<C_COMPILER_ID:comp></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the CMake-id of the C compiler matches <code class="docutils literal"><span class="pre">comp</span></code>, otherwise <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<CXX_COMPILER_ID:comp></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the CMake-id of the CXX compiler matches <code class="docutils literal"><span class="pre">comp</span></code>, otherwise <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<VERSION_LESS:v1,v2></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">v1</span></code> is a version less than <code class="docutils literal"><span class="pre">v2</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<VERSION_GREATER:v1,v2></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">v1</span></code> is a version greater than <code class="docutils literal"><span class="pre">v2</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<VERSION_EQUAL:v1,v2></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">v1</span></code> is the same version as <code class="docutils literal"><span class="pre">v2</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<VERSION_LESS_EQUAL:v1,v2></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">v1</span></code> is a version less than or equal to <code class="docutils literal"><span class="pre">v2</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<VERSION_GREATER_EQUAL:v1,v2></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if <code class="docutils literal"><span class="pre">v1</span></code> is a version greater than or equal to <code class="docutils literal"><span class="pre">v2</span></code>, else <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<C_COMPILER_VERSION:ver></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the version of the C compiler matches <code class="docutils literal"><span class="pre">ver</span></code>, otherwise <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<CXX_COMPILER_VERSION:ver></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the version of the CXX compiler matches <code class="docutils literal"><span class="pre">ver</span></code>, otherwise <code class="docutils literal"><span class="pre">0</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_POLICY:pol></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if the policy <code class="docutils literal"><span class="pre">pol</span></code> was NEW when the ‘head’ target was created, |
| else <code class="docutils literal"><span class="pre">0</span></code>. If the policy was not set, the warning message for the policy |
| will be emitted. This generator expression only works for a subset of |
| policies.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<COMPILE_FEATURES:feature[,feature]...></span></code></dt> |
| <dd><code class="docutils literal"><span class="pre">1</span></code> if all of the <code class="docutils literal"><span class="pre">feature</span></code> features are available for the ‘head’ |
| target, and <code class="docutils literal"><span class="pre">0</span></code> otherwise. If this expression is used while evaluating |
| the link implementation of a target and if any dependency transitively |
| increases the required <span class="target" id="index-0-prop_tgt:C_STANDARD"></span><a class="reference internal" href="../prop_tgt/C_STANDARD.html#prop_tgt:C_STANDARD" title="C_STANDARD"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">C_STANDARD</span></code></a> or <span class="target" id="index-0-prop_tgt:CXX_STANDARD"></span><a class="reference internal" href="../prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD" title="CXX_STANDARD"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">CXX_STANDARD</span></code></a> |
| for the ‘head’ target, an error is reported. See the |
| <span class="target" id="index-0-manual:cmake-compile-features(7)"></span><a class="reference internal" href="cmake-compile-features.7.html#manual:cmake-compile-features(7)" title="cmake-compile-features(7)"><code class="xref cmake cmake-manual docutils literal"><span class="pre">cmake-compile-features(7)</span></code></a> manual for information on |
| compile features and a list of supported compilers.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<COMPILE_LANGUAGE:lang></span></code></dt> |
| <dd><p class="first"><code class="docutils literal"><span class="pre">1</span></code> when the language used for compilation unit matches <code class="docutils literal"><span class="pre">lang</span></code>, |
| otherwise <code class="docutils literal"><span class="pre">0</span></code>. This expression used to specify compile options for |
| source files of a particular language in a target. For example, to specify |
| the use of the <code class="docutils literal"><span class="pre">-fno-exceptions</span></code> compile option (compiler id checks |
| elided):</p> |
| <div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">add_executable</span><span class="p">(</span><span class="s">myapp</span> <span class="s">main.cpp</span> <span class="s">foo.c</span> <span class="s">bar.cpp</span><span class="p">)</span> |
| <span class="nb">target_compile_options</span><span class="p">(</span><span class="s">myapp</span> |
| <span class="s">PRIVATE</span> <span class="o">$<</span><span class="nv">$<COMPILE_LANGUAGE:CXX</span><span class="o">></span><span class="s">:-fno-exceptions></span> |
| <span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>This generator expression has limited use because it is not possible to |
| use it with the Visual Studio generators. Portable buildsystems would |
| not use this expression, and would create separate libraries for each |
| source file language instead:</p> |
| <div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">add_library</span><span class="p">(</span><span class="s">myapp_c</span> <span class="s">foo.c</span><span class="p">)</span> |
| <span class="nb">add_library</span><span class="p">(</span><span class="s">myapp_cxx</span> <span class="s">foo.c</span><span class="p">)</span> |
| <span class="nb">target_compile_options</span><span class="p">(</span><span class="s">myapp_cxx</span> <span class="s">PUBLIC</span> <span class="s">-fno-exceptions</span><span class="p">)</span> |
| <span class="nb">add_executable</span><span class="p">(</span><span class="s">myapp</span> <span class="s">main.cpp</span><span class="p">)</span> |
| <span class="nb">target_link_libraries</span><span class="p">(</span><span class="s">myapp</span> <span class="s">myapp_c</span> <span class="s">myapp_cxx</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>The <code class="docutils literal"><span class="pre">Makefile</span></code> and <code class="docutils literal"><span class="pre">Ninja</span></code> based generators can also use this |
| expression to specify compile-language specific compile definitions |
| and include directories:</p> |
| <div class="last highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">add_executable</span><span class="p">(</span><span class="s">myapp</span> <span class="s">main.cpp</span> <span class="s">foo.c</span> <span class="s">bar.cpp</span><span class="p">)</span> |
| <span class="nb">target_compile_definitions</span><span class="p">(</span><span class="s">myapp</span> |
| <span class="s">PRIVATE</span> <span class="o">$<</span><span class="nv">$<COMPILE_LANGUAGE:CXX</span><span class="o">></span><span class="s">:COMPILING_CXX></span> |
| <span class="p">)</span> |
| <span class="nb">target_include_directories</span><span class="p">(</span><span class="s">myapp</span> |
| <span class="s">PRIVATE</span> <span class="o">$<</span><span class="nv">$<COMPILE_LANGUAGE:CXX</span><span class="o">></span><span class="s">:/opt/foo/cxx_headers></span> |
| <span class="p">)</span> |
| </pre></div> |
| </div> |
| </dd> |
| </dl> |
| </div> |
| <div class="section" id="informational-expressions"> |
| <h2><a class="toc-backref" href="#id4">Informational Expressions</a><a class="headerlink" href="#informational-expressions" title="Permalink to this headline">¶</a></h2> |
| <p>These expressions expand to some information. The information may be used |
| directly, eg:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span>include_directories(/usr/include/$<CXX_COMPILER_ID>/) |
| </pre></div> |
| </div> |
| <p>expands to <code class="docutils literal"><span class="pre">/usr/include/GNU/</span></code> or <code class="docutils literal"><span class="pre">/usr/include/Clang/</span></code> etc, depending on |
| the Id of the compiler.</p> |
| <p>These expressions may also may be combined with logical expressions:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span>$<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,4.2.0>:OLD_COMPILER> |
| </pre></div> |
| </div> |
| <p>expands to <code class="docutils literal"><span class="pre">OLD_COMPILER</span></code> if the |
| <span class="target" id="index-0-variable:CMAKE_<LANG>_COMPILER_VERSION"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_VERSION.html#variable:CMAKE_<LANG>_COMPILER_VERSION" title="CMAKE_<LANG>_COMPILER_VERSION"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_CXX_COMPILER_VERSION</span></code></a> is less |
| than 4.2.0.</p> |
| <p>Available informational expressions are:</p> |
| <dl class="docutils"> |
| <dt><code class="docutils literal"><span class="pre">$<CONFIGURATION></span></code></dt> |
| <dd>Configuration name. Deprecated. Use <code class="docutils literal"><span class="pre">CONFIG</span></code> instead.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<CONFIG></span></code></dt> |
| <dd>Configuration name</dd> |
| <dt><code class="docutils literal"><span class="pre">$<PLATFORM_ID></span></code></dt> |
| <dd>The CMake-id of the platform. |
| See also the <span class="target" id="index-0-variable:CMAKE_SYSTEM_NAME"></span><a class="reference internal" href="../variable/CMAKE_SYSTEM_NAME.html#variable:CMAKE_SYSTEM_NAME" title="CMAKE_SYSTEM_NAME"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_SYSTEM_NAME</span></code></a> variable.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<C_COMPILER_ID></span></code></dt> |
| <dd>The CMake-id of the C compiler used. |
| See also the <span class="target" id="index-0-variable:CMAKE_<LANG>_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_<LANG>_COMPILER_ID" title="CMAKE_<LANG>_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_<LANG>_COMPILER_ID</span></code></a> variable.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<CXX_COMPILER_ID></span></code></dt> |
| <dd>The CMake-id of the CXX compiler used. |
| See also the <span class="target" id="index-1-variable:CMAKE_<LANG>_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_<LANG>_COMPILER_ID" title="CMAKE_<LANG>_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_<LANG>_COMPILER_ID</span></code></a> variable.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<C_COMPILER_VERSION></span></code></dt> |
| <dd>The version of the C compiler used. |
| See also the <span class="target" id="index-1-variable:CMAKE_<LANG>_COMPILER_VERSION"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_VERSION.html#variable:CMAKE_<LANG>_COMPILER_VERSION" title="CMAKE_<LANG>_COMPILER_VERSION"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_<LANG>_COMPILER_VERSION</span></code></a> variable.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<CXX_COMPILER_VERSION></span></code></dt> |
| <dd>The version of the CXX compiler used. |
| See also the <span class="target" id="index-2-variable:CMAKE_<LANG>_COMPILER_VERSION"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_VERSION.html#variable:CMAKE_<LANG>_COMPILER_VERSION" title="CMAKE_<LANG>_COMPILER_VERSION"><code class="xref cmake cmake-variable docutils literal"><span class="pre">CMAKE_<LANG>_COMPILER_VERSION</span></code></a> variable.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_FILE:tgt></span></code></dt> |
| <dd>Full path to main file (.exe, .so.1.2, .a) where <code class="docutils literal"><span class="pre">tgt</span></code> is the name of a target.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_FILE_NAME:tgt></span></code></dt> |
| <dd>Name of main file (.exe, .so.1.2, .a).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_FILE_DIR:tgt></span></code></dt> |
| <dd>Directory of main file (.exe, .so.1.2, .a).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_LINKER_FILE:tgt></span></code></dt> |
| <dd>File used to link (.a, .lib, .so) where <code class="docutils literal"><span class="pre">tgt</span></code> is the name of a target.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_LINKER_FILE_NAME:tgt></span></code></dt> |
| <dd>Name of file used to link (.a, .lib, .so).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_LINKER_FILE_DIR:tgt></span></code></dt> |
| <dd>Directory of file used to link (.a, .lib, .so).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_SONAME_FILE:tgt></span></code></dt> |
| <dd>File with soname (.so.3) where <code class="docutils literal"><span class="pre">tgt</span></code> is the name of a target.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_SONAME_FILE_NAME:tgt></span></code></dt> |
| <dd>Name of file with soname (.so.3).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_SONAME_FILE_DIR:tgt></span></code></dt> |
| <dd>Directory of with soname (.so.3).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_PDB_FILE:tgt></span></code></dt> |
| <dd><p class="first">Full path to the linker generated program database file (.pdb) |
| where <code class="docutils literal"><span class="pre">tgt</span></code> is the name of a target.</p> |
| <p class="last">See also the <span class="target" id="index-0-prop_tgt:PDB_NAME"></span><a class="reference internal" href="../prop_tgt/PDB_NAME.html#prop_tgt:PDB_NAME" title="PDB_NAME"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">PDB_NAME</span></code></a> and <span class="target" id="index-0-prop_tgt:PDB_OUTPUT_DIRECTORY"></span><a class="reference internal" href="../prop_tgt/PDB_OUTPUT_DIRECTORY.html#prop_tgt:PDB_OUTPUT_DIRECTORY" title="PDB_OUTPUT_DIRECTORY"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">PDB_OUTPUT_DIRECTORY</span></code></a> |
| target properties and their configuration specific variants |
| <span class="target" id="index-0-prop_tgt:PDB_NAME_<CONFIG>"></span><a class="reference internal" href="../prop_tgt/PDB_NAME_CONFIG.html#prop_tgt:PDB_NAME_<CONFIG>" title="PDB_NAME_<CONFIG>"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">PDB_NAME_<CONFIG></span></code></a> and <span class="target" id="index-0-prop_tgt:PDB_OUTPUT_DIRECTORY_<CONFIG>"></span><a class="reference internal" href="../prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.html#prop_tgt:PDB_OUTPUT_DIRECTORY_<CONFIG>" title="PDB_OUTPUT_DIRECTORY_<CONFIG>"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">PDB_OUTPUT_DIRECTORY_<CONFIG></span></code></a>.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_PDB_FILE_NAME:tgt></span></code></dt> |
| <dd>Name of the linker generated program database file (.pdb).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_PDB_FILE_DIR:tgt></span></code></dt> |
| <dd>Directory of the linker generated program database file (.pdb).</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_PROPERTY:tgt,prop></span></code></dt> |
| <dd><p class="first">Value of the property <code class="docutils literal"><span class="pre">prop</span></code> on the target <code class="docutils literal"><span class="pre">tgt</span></code>.</p> |
| <p class="last">Note that <code class="docutils literal"><span class="pre">tgt</span></code> is not added as a dependency of the target this |
| expression is evaluated on.</p> |
| </dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_PROPERTY:prop></span></code></dt> |
| <dd>Value of the property <code class="docutils literal"><span class="pre">prop</span></code> on the target on which the generator |
| expression is evaluated.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<INSTALL_PREFIX></span></code></dt> |
| <dd>Content of the install prefix when the target is exported via |
| <span class="target" id="index-0-command:install"></span><a class="reference internal" href="../command/install.html#command:install" title="install"><code class="xref cmake cmake-command docutils literal"><span class="pre">install(EXPORT)</span></code></a> and empty otherwise.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<COMPILE_LANGUAGE></span></code></dt> |
| <dd>The compile language of source files when evaluating compile options. See |
| the unary version for notes about portability of this generator |
| expression.</dd> |
| </dl> |
| </div> |
| <div class="section" id="output-expressions"> |
| <h2><a class="toc-backref" href="#id5">Output Expressions</a><a class="headerlink" href="#output-expressions" title="Permalink to this headline">¶</a></h2> |
| <p>These expressions generate output, in some cases depending on an input. These |
| expressions may be combined with other expressions for information or logical |
| comparison:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span>-I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I> |
| </pre></div> |
| </div> |
| <p>generates a string of the entries in the <span class="target" id="index-1-prop_tgt:INCLUDE_DIRECTORIES"></span><a class="reference internal" href="../prop_tgt/INCLUDE_DIRECTORIES.html#prop_tgt:INCLUDE_DIRECTORIES" title="INCLUDE_DIRECTORIES"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">INCLUDE_DIRECTORIES</span></code></a> target |
| property with each entry preceded by <code class="docutils literal"><span class="pre">-I</span></code>. Note that a more-complete use |
| in this situation would require first checking if the INCLUDE_DIRECTORIES |
| property is non-empty:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span>$<$<BOOL:${prop}>:-I$<JOIN:${prop}, -I>> |
| </pre></div> |
| </div> |
| <p>where <code class="docutils literal"><span class="pre">${prop}</span></code> refers to a helper variable:</p> |
| <div class="highlight-default"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="n">prop</span> <span class="s2">"$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>"</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>Available output expressions are:</p> |
| <dl class="docutils"> |
| <dt><code class="docutils literal"><span class="pre">$<0:...></span></code></dt> |
| <dd>Empty string (ignores <code class="docutils literal"><span class="pre">...</span></code>)</dd> |
| <dt><code class="docutils literal"><span class="pre">$<1:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<JOIN:list,...></span></code></dt> |
| <dd>Joins the list with the content of <code class="docutils literal"><span class="pre">...</span></code></dd> |
| <dt><code class="docutils literal"><span class="pre">$<ANGLE-R></span></code></dt> |
| <dd>A literal <code class="docutils literal"><span class="pre">></span></code>. Used to compare strings which contain a <code class="docutils literal"><span class="pre">></span></code> for example.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<COMMA></span></code></dt> |
| <dd>A literal <code class="docutils literal"><span class="pre">,</span></code>. Used to compare strings which contain a <code class="docutils literal"><span class="pre">,</span></code> for example.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<SEMICOLON></span></code></dt> |
| <dd>A literal <code class="docutils literal"><span class="pre">;</span></code>. Used to prevent list expansion on an argument with <code class="docutils literal"><span class="pre">;</span></code>.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_NAME:...></span></code></dt> |
| <dd>Marks <code class="docutils literal"><span class="pre">...</span></code> as being the name of a target. This is required if exporting |
| targets to multiple dependent export sets. The <code class="docutils literal"><span class="pre">...</span></code> must be a literal |
| name of a target- it may not contain generator expressions.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<LINK_ONLY:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> except when evaluated in a link interface while |
| propagating <a class="reference internal" href="cmake-buildsystem.7.html#target-usage-requirements"><span class="std std-ref">Transitive Usage Requirements</span></a>, in which case it is the |
| empty string. |
| Intended for use only in an <span class="target" id="index-0-prop_tgt:INTERFACE_LINK_LIBRARIES"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_LIBRARIES.html#prop_tgt:INTERFACE_LINK_LIBRARIES" title="INTERFACE_LINK_LIBRARIES"><code class="xref cmake cmake-prop_tgt docutils literal"><span class="pre">INTERFACE_LINK_LIBRARIES</span></code></a> target |
| property, perhaps via the <span class="target" id="index-1-command:target_link_libraries"></span><a class="reference internal" href="../command/target_link_libraries.html#command:target_link_libraries" title="target_link_libraries"><code class="xref cmake cmake-command docutils literal"><span class="pre">target_link_libraries()</span></code></a> command, |
| to specify private link dependencies without other usage requirements.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<INSTALL_INTERFACE:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> when the property is exported using <span class="target" id="index-1-command:install"></span><a class="reference internal" href="../command/install.html#command:install" title="install"><code class="xref cmake cmake-command docutils literal"><span class="pre">install(EXPORT)</span></code></a>, |
| and empty otherwise.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<BUILD_INTERFACE:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> when the property is exported using <span class="target" id="index-0-command:export"></span><a class="reference internal" href="../command/export.html#command:export" title="export"><code class="xref cmake cmake-command docutils literal"><span class="pre">export()</span></code></a>, or |
| when the target is used by another target in the same buildsystem. Expands to |
| the empty string otherwise.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<LOWER_CASE:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> converted to lower case.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<UPPER_CASE:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> converted to upper case.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<MAKE_C_IDENTIFIER:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> converted to a C identifier.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<TARGET_OBJECTS:objLib></span></code></dt> |
| <dd>List of objects resulting from build of <code class="docutils literal"><span class="pre">objLib</span></code>. <code class="docutils literal"><span class="pre">objLib</span></code> must be an |
| object of type <code class="docutils literal"><span class="pre">OBJECT_LIBRARY</span></code>. This expression may only be used in |
| the sources of <span class="target" id="index-0-command:add_library"></span><a class="reference internal" href="../command/add_library.html#command:add_library" title="add_library"><code class="xref cmake cmake-command docutils literal"><span class="pre">add_library()</span></code></a> and <span class="target" id="index-0-command:add_executable"></span><a class="reference internal" href="../command/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> |
| commands.</dd> |
| <dt><code class="docutils literal"><span class="pre">$<SHELL_PATH:...></span></code></dt> |
| <dd>Content of <code class="docutils literal"><span class="pre">...</span></code> converted to shell path style. For example, slashes are |
| converted to backslashes in Windows shells and drive letters are converted |
| to posix paths in MSYS shells. The <code class="docutils literal"><span class="pre">...</span></code> must be an absolute path.</dd> |
| </dl> |
| </div> |
| </div> |
| |
| |
| </div> |
| </div> |
| </div> |
| <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> |
| <div class="sphinxsidebarwrapper"> |
| <h3><a href="../index.html">Table Of Contents</a></h3> |
| <ul> |
| <li><a class="reference internal" href="#">cmake-generator-expressions(7)</a><ul> |
| <li><a class="reference internal" href="#introduction">Introduction</a></li> |
| <li><a class="reference internal" href="#logical-expressions">Logical Expressions</a></li> |
| <li><a class="reference internal" href="#informational-expressions">Informational Expressions</a></li> |
| <li><a class="reference internal" href="#output-expressions">Output Expressions</a></li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>Previous topic</h4> |
| <p class="topless"><a href="cmake-developer.7.html" |
| title="previous chapter">cmake-developer(7)</a></p> |
| <h4>Next topic</h4> |
| <p class="topless"><a href="cmake-generators.7.html" |
| title="next chapter">cmake-generators(7)</a></p> |
| <div role="note" aria-label="source link"> |
| <h3>This Page</h3> |
| <ul class="this-page-menu"> |
| <li><a href="../_sources/manual/cmake-generator-expressions.7.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="cmake-generators.7.html" title="cmake-generators(7)" |
| >next</a> |</li> |
| <li class="right" > |
| <a href="cmake-developer.7.html" title="cmake-developer(7)" |
| >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> |
| |
| </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> |