How can I decode the boost library naming?
Asked Answered
T

3

58

I tried to find out that gd means in boost library name and I only found two other people looking for the same thing.

I suppose it should be a place where this is clearly documented and I would like to find it.

  • mt - multitheaded, get it with bjam threading=multi
  • s - bjam runtime-link=static
  • g - using debug versions of the standard and runtime support libraries. what bjam switch???
  • d - debug bjam variant=debug

Update

How do I control what bjam switches controls the above variants? In fact the only one that I wasn't able to identify is the g.

Thirtytwomo answered 26/4, 2010 at 16:40 Comment(2)
Have you tried google "boost lib mt gd s sgd meaning". The first link "Boost lib linker error Visual C++ - Stack Overflow" give the same pointer than the answer from Mark.Demure
Yes I did with something similar using naming instead of meaning and I found nothing in the first 20 results. The help page explains the meaning very well but it doesn't specify what bjam switches do change them.Thirtytwomo
D
64

See Boost getting started windows section 6.3 naming and section 6.1 on Unix naming

The ones that deal with -mt and d are

-mt Threading tag: indicates that the library was built with multithreading support enabled. Libraries built without multithreading support can be identified by the absence of `-mt`.  

-d ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag as listed in this table:
  Key   Use this library when (Boost.Build option)
  s     linking statically to the C++ standard library 
        and compiler runtime support libraries.
        (runtime-link=static)
  g     using debug versions of the standard and runtime support libraries. 
        (runtime-debugging=on)
  y     using a special debug build of Python.
        (python-debugging=on)
  d     building a debug version of your code.
        (variant=debug)
  p     using the STLPort standard library rather than
        the default one supplied with your compiler.
        (stdlib=stlport)
Demimonde answered 26/4, 2010 at 16:47 Comment(4)
Thanks, the help almost solved my issue, now it remained only one question: what bjam switch does trigger the g?Thirtytwomo
see 5.3.4 - The option “--build-type=complete” causes bjam to build all supported variants of the libraries.Demimonde
Thanks, I am aware about complete variant, but the idea was to minimize the disk space and build only the things I need/want. Fortunately the g switch is enabled by default and I obtained the minimal build I was looking for. Still I would like to know how can you disable it in order to document this for others.Thirtytwomo
Updated link: boost.org/doc/libs/1_70_0/more/getting_started/…Shinny
B
12

From the Boost documentation at http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#library-naming, the convention is:

-mt Threading tag: indicates that the library was built with multithreading support enabled. Libraries built without multithreading support can be identified by the absence of -mt.

-d ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag:

Key     Use this library when:
s   linking statically to the C++ standard library and compiler runtime support libraries.
g   using debug versions of the standard and runtime support libraries.
y   using a special debug build of Python.
d   building a debug version of your code.
p   using the STLPort standard library rather than the default one supplied with your compiler.
n   using STLPort's deprecated “native iostreams” feature.

For example, if you build a debug version of your code for use with debug versions of the static runtime library and the STLPort standard library in “native iostreams” mode, the tag would be: -sgdpn. If none of the above apply, the ABI tag is ommitted.

Bern answered 22/2, 2013 at 8:0 Comment(0)
F
0

The basic set of built-in features, which is what you specify on the command line (feature=value), are described in the BBv2 documentation (see builtin features). I don't know if we already updated the getting started guide in the upcoming 1.43 release but there is an outstanding documentation change to add those built-in option descriptions to the getting started guide for quicker access.

Frigidarium answered 27/4, 2010 at 12:27 Comment(1)
I am pretty sure that in 1.43, the table of those decoration letters includes the corresponding Boost.Build feature.Laevorotatory

© 2022 - 2024 — McMap. All rights reserved.