Boost logo

Boost-Build :

Subject: Re: [Boost-build] common.copy target location
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2018-08-28 13:31:36


On 08/28/2018 06:01 AM, Ian Emmons via Boost-build wrote:
> I am using Boost 1.67.0, and I just recently discovered a change in its
> behavior compared to previous versions.  I am running unit tests, and
> these tests require a copy of a configuration file in the same directory
> as the running executable.  To make that work, I added an explicit
> dependency to the unit-test target and an explicit target performs the
> copy, like so:
>     unit-test ParliamentTest
>         :    [ glob $(SourceDir)/*.cpp ]
>             list-of-libraries
>         :    <target-os>windows:<dependency>ParliamentConfig.txt
>         :    # default build
>         :    # usage requirements
>         ;
>     explicit ParliamentConfig.txt ;
>     make ParliamentConfig.txt : $(SourceDir)/ParliamentConfig.txt :
> @common.copy ;
> In prior versions of Boost.Build, the copy would land in the same
> directory as the test executable, e.g.,
> "<output-dir>/msvc-14.1/release/address-model-64/threading-multi/ParliamentConfig.txt",
> but in Boost 1.67.0 the copy lands in "<output-dir>".
> Is this change expected?  How can I get back to the old behavior?

  The change is intentional. The directory for a target
only includes features that affect the building of the
target in some way. common.copy doesn't depend on any
features, so the target is placed in the root output

You have two choices to work around this. Adding
<relevant>toolset <relevant>variant <relevant>address-model,
etc, will explicitly force Boost.Build to include
these features in the path. The other option is
to refactor it so that the config file depends on
the executable (and thus inherits feature relevance).

exe ParlimentTest.exe : ... ;
make ParlimentConfig.txt : ... : ... : <use>ParlimentTest.exe ;
unit-test ParlimentTest : ParlimentTest.exe :
  <target-os>windows:<dependency>ParlimentConfig.txt ;

for more details. (This was supposed to be linked
from here:
but the link seems to have been lost in the
move to asciidoc.)

In Christ,
Steven Watanabe

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at