How can I decode the boost library naming?

C++BoostBoost BuildBjam

C++ Problem Overview


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.

C++ Solutions


Solution 1 - C++

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)

Solution 2 - C++

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.

Solution 3 - C++

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsorinView Question on Stackoverflow
Solution 1 - C++mmmmmmView Answer on Stackoverflow
Solution 2 - C++RiotView Answer on Stackoverflow
Solution 3 - C++GrafikRobotView Answer on Stackoverflow