mirror of
https://github.com/boostorg/build.git
synced 2026-02-16 13:22:11 +00:00
112 lines
4.5 KiB
XML
112 lines
4.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE appendix PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
|
|
|
<!-- Copyright 2006 Vladimir Prus -->
|
|
<!-- Distributed under the Boost Software License, Version 1.0. -->
|
|
<!-- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) -->
|
|
|
|
<appendix id="bbv2.vs_v1">
|
|
<title>Differences to Boost.Build V1</title>
|
|
<!-- "Differences to" is the British English usage. American
|
|
English is "differences from." You can use the former but be
|
|
sure you know what you're doing -->
|
|
|
|
<para>While Boost.Build V2 is based on the same ideas as Boost.Build V1,
|
|
some of the syntax was changed, and some new important features were
|
|
added. This chapter describes most of the changes.</para>
|
|
|
|
<section id="bbv2.overview.differences_to_v1.configuration">
|
|
<title>Configuration</title>
|
|
|
|
<para>In V1, toolsets were configured by environment variables. If you
|
|
wanted to use two versions of the same toolset, you had to create a new
|
|
toolset module that would set the variables and then invoke the base
|
|
toolset. In V2, toolsets are configured by the
|
|
<functionname>using</functionname>, and you can easily configure several
|
|
versions of a toolset. See <xref
|
|
linkend="bbv2.overview.configuration"/> for details.
|
|
</para>
|
|
|
|
</section>
|
|
|
|
<section id="bbv2.overview.differences_to_v1.jamfiles">
|
|
<title>Writing Jamfiles</title>
|
|
|
|
<para>Probably one of the most important differences in V2 Jamfiles is
|
|
the use of project requirements. In V1, if several targets had the same
|
|
requirements (for example, a common <code>#include</code> path), it was necessary to
|
|
manually write the requirements or use a helper rule or template target. In V2, the
|
|
common properties can be specified with the <code>requirements</code> project
|
|
attribute, as documented in <xref linkend="bbv2.overview.projects"/>.
|
|
</para>
|
|
|
|
<para><link linkend="bbv2.tutorial.libs">Usage requirements</link>
|
|
also help to simplify Jamfiles.
|
|
<!-- Simplify, simplify, simplify! You could go through the
|
|
entire document several times and make changes like that
|
|
one -->
|
|
If a library requires
|
|
all clients to use specific <code>#include</code> paths or macros when compiling
|
|
code that depends on the library, that information can be cleanly
|
|
represented.</para>
|
|
|
|
<para>The difference between <code>lib</code> and <code>dll</code> targets in V1 is completely
|
|
eliminated in V2. There's only one library target type, <code>lib</code>, which can create
|
|
either static or shared libraries depending on the value of the
|
|
<link linkend="bbv2.overview.builtins.features.link"><varname><link></varname>
|
|
feature</link>. If your target should be only built in one way<!--"variant" has a different meaning here-->, you
|
|
can add <code><link>shared</code> or <code><link>static</code> to its requirements.
|
|
</para>
|
|
|
|
<para>The syntax for referring to other targets was changed a bit. While
|
|
in V1 one would use:
|
|
<programlisting>
|
|
exe a : a.cpp <lib>../foo/bar ;
|
|
</programlisting>
|
|
the V2 syntax is:
|
|
<programlisting>
|
|
exe a : a.cpp ../foo//bar ;
|
|
</programlisting>
|
|
Note that you don't need to specify the type of other target, but the
|
|
last element should be separated from the others by a double slash to indicate that
|
|
you're referring to target <filename>bar</filename> in project <filename>../foo</filename>, and not to
|
|
project <filename>../foo/bar</filename>.
|
|
</para>
|
|
|
|
|
|
</section>
|
|
|
|
<section id="bbv2.overview.differences_to_v1.build_process">
|
|
<title>Build process</title>
|
|
|
|
<para>The command line syntax in V2 is completely different. For example
|
|
<programlisting>
|
|
bjam -sTOOLS=msvc -sBUILD=release some_target
|
|
</programlisting>
|
|
now becomes:
|
|
<programlisting>
|
|
bjam toolset=msvc variant=release some_target
|
|
</programlisting>
|
|
or, using implicit features, just:
|
|
<programlisting>
|
|
bjam msvc release some_target
|
|
</programlisting>
|
|
See <link linkend="bbv2.overview.invocation">the reference</link> for a
|
|
complete description of the syntax.
|
|
</para>
|
|
|
|
|
|
</section>
|
|
</appendix>
|
|
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: xml
|
|
sgml-indent-data: t
|
|
sgml-parent-document: ("userman.xml" "chapter")
|
|
sgml-set-face: t
|
|
End:
|
|
-->
|