Boost logo

Boost-Build :

Subject: [Boost-build] install target never up to date and error while copying
From: Sebastian Hauer (sebastian.hauer_at_[hidden])
Date: 2008-09-15 16:55:54


Hello,
I am trying to use the install rule, to create a staging dist
directory with all my header and binaries.
Although everything gets correctly copied into the specified sub
directories, bjam never seems to know that the 'installed' targets are
up to date and always updates one of the library files. BTW: This
happens on windows and is a DLL import .lib file.
The project is setup as follows:

pirate/Jamroot.jam
pirate/tr/Jamfile.jam
pirate/utils/Jamfile.jam

Where /Jamroot.jam contains:
############
alias all : /pirate/common /pirate/math /pirate/utils /pirate/tr ;

alias dist : all /pirate/common//dist /pirate/math//dist
/pirate/utils//dist /pirate/tr//dist ;
explicit dist ;
############

And every code modules Jamfile.jam contains the following:
############
install dist-libs
     : pirate-tr
     : <variant>release:<location>$(DIST_BASE)/opt
       <variant>debug:<location>$(DIST_BASE)/dbg
;
explicit dist-libs ;

install dist-headers
     : [ glob-tree *.hpp *.h : test ]
     : <location>$(DIST_INCL)
       <install-source-root>./src
;
explicit dist-headers ;

alias dist : dist-libs dist-headers ;
explicit dist ;
############

Is this a good way to do it, that is calling 'install' in every sub module?
The other issue I have is that utils/Jamfile.jam install target
'dist-headers' seems to get called twice when I am running bjam dist
and I am getting the following error:

A subdirectory or file C:\dev\pirate2\dist\pirate-2.0\include\.. already exists.

    mkdir "C:\dev\pirate2\dist\pirate-2.0\include\.."

...failed MkDir1 C:\dev\pirate2\dist\pirate-2.0\include\.....
...skipped C:\dev\pirate2\dist\pirate-2.0\include\..\.. for lack of
C:\dev\pirate2\dist\pirate-2.0\include\.....
...skipped C:\dev\pirate2\dist\pirate-2.0\include\..\..\utils for lack
of C:\dev\pirate2\dist\pirate-2.0\include\..\.....
...skipped C:\dev\pirate2\dist\pirate-2.0\include\..\..\utils\bin for
lack of C:\dev\pirate2\dist\pirate-2.0\include\..\..\utils...
...skipped C:\dev\pirate2\dist\pirate-2.0\include\..\..\utils\bin\msvc-8.0
for lack of C:\dev\pirate2\dist\pirate-2.0\include\..\..\utils\bin...

As I've said the content had actually already been copied I guess
perhaps because my pirate-tr projects depends on pirate-utils maybe?
Any ideas, how do other people use the install rule in their projects?

Thanks,
Sebastian


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