forked from boostorg/predef
Add missing file.
This commit is contained in:
148
doc/html/predef/check_utilities.html
Normal file
148
doc/html/predef/check_utilities.html
Normal file
@@ -0,0 +1,148 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Check Utilities</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.2">
|
||||
<link rel="up" href="../index.html" title="Predef 1.2">
|
||||
<link rel="prev" href="reference/version_definition_macros.html" title="Version definition macros">
|
||||
<link rel="next" href="history.html" title="History">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.check_utilities"></a><a class="link" href="check_utilities.html" title="Check Utilities">Check Utilities</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
The <code class="computeroutput"><span class="identifier">predef_check</span></code> utility provides
|
||||
a facility for building a program that will check a given set of expressions
|
||||
against the definitions it detected when it was built.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.check_utilities.h0"></a>
|
||||
<span class="phrase"><a name="predef.check_utilities.predef_check_programs"></a></span><a class="link" href="check_utilities.html#predef.check_utilities.predef_check_programs"><code class="literal">predef_check</code>
|
||||
programs</a>
|
||||
</h4>
|
||||
<p>
|
||||
Even though there is only one <code class="computeroutput"><span class="identifier">predef_check</span></code>
|
||||
program, there are variations for each of the languages that are detected by
|
||||
Predef to match the convention for sources files. For all of them one invokes
|
||||
with a list of expression arguments. The expressions are evaluated within the
|
||||
context of the particular <code class="literal">predef_check</code> program and if they
|
||||
all are true zero (0) is returned. Otherwise the index of the first false expression
|
||||
is returned.
|
||||
</p>
|
||||
<p>
|
||||
The expression syntax is simple:
|
||||
</p>
|
||||
<pre class="programlisting">predef-definition [ relational-operator version-value ]
|
||||
</pre>
|
||||
<p>
|
||||
<em class="replaceable"><code>predef-definition</code></em> can be any of the Predef definitions.
|
||||
For example <code class="computeroutput"><span class="identifier">BOOST_COMP_GCC</span></code>.
|
||||
</p>
|
||||
<p>
|
||||
<em class="replaceable"><code>relational-operator</code></em> can be any of: <code class="literal">></code>,
|
||||
<code class="literal"><</code>, <code class="literal">>=</code>, <code class="literal"><=</code>,
|
||||
<code class="literal">==</code> and <code class="literal">!=</code>.
|
||||
</p>
|
||||
<p>
|
||||
<em class="replaceable"><code>version-number</code></em> can be a full or partial version
|
||||
triplet value. If it's a partial version triple it is completed with zeros.
|
||||
That is <code class="literal">x.y</code> is equivalent to <code class="literal">x.y.0</code> and
|
||||
<code class="literal">x</code> is equivalent to <code class="literal">x.0.0</code>.
|
||||
</p>
|
||||
<p>
|
||||
The <em class="replaceable"><code>relations-operator</code></em> and <em class="replaceable"><code>version-number</code></em>
|
||||
can be ommited. In which case it is equivalent to:
|
||||
</p>
|
||||
<pre class="programlisting">predef-definition > 0.0.0
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="predef.check_utilities.h1"></a>
|
||||
<span class="phrase"><a name="predef.check_utilities.using_with_boost_build"></a></span><a class="link" href="check_utilities.html#predef.check_utilities.using_with_boost_build">Using
|
||||
with Boost.Build</a>
|
||||
</h4>
|
||||
<p>
|
||||
You can use the <code class="literal">predef_check</code> programs directly from Boost
|
||||
Build to configure target requirements. This is useful for controlling what
|
||||
gets built as part of your project based on the detailed version information
|
||||
available in Predef. The basic use is simple:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
exe my_windows_program : windows_source.cpp
|
||||
: [ predef-require "BOOST_OS_WINDOWS" ] ;
|
||||
</pre>
|
||||
<p>
|
||||
That simple use case will skip building the <code class="literal">my_windows_program</code>
|
||||
unless one is building for Windows. Like the direct <code class="literal">predef_check</code>
|
||||
you can pass mutiple expressions using relational comparisons. For example:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
lib my_special_lib : source.cpp
|
||||
: [ predef-require "BOOST_OS_WINDOWS != 0" "BOOST_OS_VMS != 0"] ;
|
||||
</pre>
|
||||
<p>
|
||||
And in that case the <code class="literal">my_special_lib</code> is built only when the
|
||||
OS is not Windows or VMS. The <code class="literal">requires</code> rule is a special
|
||||
case of the <code class="literal">check</code> rule. And is defined in terms of it:
|
||||
</p>
|
||||
<pre class="programlisting">rule require ( expressions + : language ? )
|
||||
{
|
||||
return [ check $(expressions) : $(language) : : <build>no ] ;
|
||||
}
|
||||
</pre>
|
||||
<p>
|
||||
You can use the <code class="literal">check</code> rule for more control and to implement
|
||||
something other than control of what gets built. The definition for the <code class="literal">check</code>
|
||||
rule is:
|
||||
</p>
|
||||
<pre class="programlisting">rule check ( expressions + : language ? : true-properties * : false-properties * )
|
||||
</pre>
|
||||
<p>
|
||||
When invoked as a reuirement of a Boost Build target this rule will add the
|
||||
<code class="literal">true-properties</code> to the target if all the <code class="literal">expressions</code>
|
||||
evaluate to true. Otherwise the <code class="literal">false-properties</code> get added
|
||||
as requirements. For example you could use it to enable or disable features
|
||||
in your programs:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
exe my_special_exe : source.cpp
|
||||
: [ predef-check "BOOST_OS_WINDOWS == 0"
|
||||
: <define>ENABLE_WMF=0
|
||||
: <define>ENABLE_WMF=1 ] ;
|
||||
</pre>
|
||||
<p>
|
||||
For both <code class="literal">check</code> and <code class="literal">require</code> the <code class="literal">language</code>
|
||||
argument controls which variant of the <code class="literal">predef_check</code> program
|
||||
is used to check the expressions. It defaults to "c++", but can be
|
||||
any of: "c", "cpp", "objc", and "objcpp".
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2014 Rene Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,32 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Check Utility</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.2">
|
||||
<link rel="up" href="../index.html" title="Predef 1.2">
|
||||
<link rel="prev" href="reference/version_definition_macros.html" title="Version definition macros">
|
||||
<link rel="next" href="history.html" title="History">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.check_utility"></a><a class="link" href="check_utility.html" title="Check Utility">Check Utility</a>
|
||||
</h2></div></div></div></div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2014 Rene Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user