Boost logo

Boost-Build :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2005-09-27 16:09:02


Hi All,

I am working on a guide for migrating from MS vcproj files to BBv2 going
on the structure of the project properties GUI dialog. This would serve
as a reference for VC users who would ask how something works in BBv2.

It contains a terminology section for terminology differences between
the two build systems (this is an early draft):

: Terminology :

= Configuration =

A configuration in BBv2 is called a /variant/. There are three
predefined variants: release, debug and profile. Other variants can be
added if you want, but unlike vcproj files, a variant isn't used to
control different platform settings; these are done as part of the
Jamfiles themselves if such control is required. By default, BBv2 takes
care of a lot of the configuration settings that you would normally need
to change.

= Toolset =

BBv2 refers to the C++ compiler, linker and other tools provided by a
vendor such as Borland as a toolset. A toolset does not need to be C++
specific (there are fortran toolsets available) and do not have to
follow the compile/link model (e.g. flex/bison). In BBv2, the Microsoft
VC++ toolset is called msvc.

[end of extract]

This is followed by each option and its equivalent in BBv2:

: Configuration Properties/General :

= Output Directory =

This is set to the intermediate directory by default.

If you need any files in a more visible location, use the install
action, e.g.

install output : target1 ... targetN ;

will place target1 through targetN in the output directory. This is
useful if you are building one configuration (e.g. msvc-7.1 release) and
want easy access to it.

= Intermediate Directory =

This is set to the bin directory of the directory where the
Jamfile/target is located. Note that the actual location is a
subdirectory of this based on the variant, toolset and other options.

= Minimize CRT Use in ATL =

No -- This is what BBv2 supports by default.
Yes -- BBv2 does not natively support this option.

The IDE adds the define _ATL_MIN_CRT to enable minimum CRT use in ATL.

If you want this feature, you can add

feature atl-minimum-crt : no yes : composite ;
feature.compose <atl-minumum-crt>yes : <define>_ATL_MIN_CRT ;

to user-config.jam.

[end of extract]

This is still in the very early stages. It may also be useful to provide
migration guides for some of the common wizards (e.g. the Win32 console
and ATL server wizards). It should also reference the relevant sections
in the main BBv2 documentation.

There has been some headway in this on the wiki, but it would be good to
provide a comprehensive reference for vcproj/wizard/IDE users.

I have a few questions:
1. Where should I put this? Wiki? Vault? Other?
2. What format should this be in? At the moment it is in text format.
3. The vcproj allows you to configure the use of the ATL and MFC
libraries (don't use, static version, DLL version). This maps to a
library target:

# FIXME!
lib atl : : <name>atl.lib <link>shared ;
lib atl : : <name>atl_static.lib <link>static ;

however, the IDE also adds other things to the target, such as defines.
For example, using static ATL adds the _ATL_STATIC_REGISTRY define. So,
I would like to do something like:

lib atl : : ... <link>static <define>_ATL_STATIC_REGISTRY ;

so that a target that uses this:

exe atlserv : ... atl/<link>static ;

has the <define>_ATL_STATIC_REGISTRY pulled from the atl target. Is this
possible?

Comments?
- Reece

 


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk