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