Re: common.copy target location
Steven Watanabe via Boost-build <[email protected]>
| Newsgroups | gmane.comp.lib.boost.build |
|---|---|
| Organization | Providere Consulting, Inc. |
| Message-ID | <[email protected]> |
AMDG 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 directory. 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 ; See https://boostorg.github.io/build/manual/develop/index.html#bbv2.builtin.features.relevant for more details. (This was supposed to be linked from here: https://boostorg.github.io/build/manual/develop/index.html#bbv2.reference.buildprocess.targetpath but the link seems to have been lost in the move to asciidoc.) In Christ, Steven Watanabe _______________________________________________ Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build