Boost logo

Boost-Build :

From: Ray Lambert (codemonkey_at_[hidden])
Date: 2007-07-11 10:24:30


Hi Vladimir,

Thanks for the response. My responses are below.

Vladimir Prus wrote:
> On Saturday 07 July 2007 00:41, Ray Lambert wrote:
>
>> (root)
>> /common
>> /tests
>>
>> (root) has an empty Jamroot and 'common' and 'tests' each have a (very
>> simple) Jamfile. 'common' builds a static lib and the targets in 'tests'
>> try to link to it.
>>
>> The Jamfile in 'common' looks like this:
>>
>> lib common : [ glob *.cpp ] : <include>. <include>.. <link>static ;
>>
>> The Jamfile in 'tests' looks like this:
>>
>> exe xmltest : xmltest.cpp ..//common [ lib expat ] : <include>../.. ;
>>
> This "..//common", strictly speaking, refers to entire directory 'common', not
> the target 'common' in directory common. You might want to try
>
> ../common//common
>
> but I can't see why that can matter.
>
I've tried it a number of different ways but none of them worked.

In any case, note that the directory I'm building in is:
myproject/common/tests
The directory I'm referring to is: myproject/common

So, '..' should be sufficient to get to the latter from the former and
the path you suggested, '../common', would be invalid from
'myproject/common/tests'. '../../common' would be valid. I tried both of
these (and a few others) but none of them worked.

My understanding of the // syntax is that it tells bjam to look in the
Jamfile at that point in the path for the target name that appears after
the // (in this case, common). Is that correct or have I misunderstood?

Based on my assumptions, I would expect '..//common' to work and,
indeed, it does work on Linux.

>> 'common' builds successfully. When I try to build the target 'xmltest' in
>> 'tests' I get the following error:
>>
>> error: Unable to find file or target named
>> error: '..//common'
>> error: referred from project at
>> error: '.'
>>
>> Again, this all works perfectly on Linux. I've seached quite a bit but I
>> cannot find anything relating to bugs or alternative behaviour of the
>> '..//common' syntax on windows.
>>
> Are you sure there's no upper-case-vs-lower-case problem going on? Again,
> bjam is supposed to ignore case on windows, completely.
>
I don't believe so. Everything is in lower case except for the Jamfiles.
The files were originally created that way on Linux and were put into a
Subversion repo, which I checked-out to Winblows. So everything should
be identical to the way it was on Linux (and, indeed, it does appear to
be so).

Nevertheless, I tried renaming the 'common' Jamfile to all lowercase but
that didn't make a difference.

I also tried the build from a regular dosbox (instead of Cygwin's shell)
to see if that was interfering (although I couldn't imagine why it
would). No luck.

I also tried moving the project tree to my C: drive (it was on D:) and
putting 'myproject' right off root (in case there was some path-related
thing going on) and I also tried 'myproject' right off root on D:. No luck.

Any other ideas?

I really love boost.build (it's a way-overdue evolution from make) and I
want to use it for this project but my time is limited and if I can't
get the build working I'm going to be forced to revert to makefiles. 8(

Thanks again for your help!

~ray



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