|
Boost-Build : |
Subject: Re: [Boost-build] Copy TCL script using install rule
From: Vladimir Prus (ghost_at_[hidden])
Date: 2008-11-22 04:00:38
On Tuesday 18 November 2008 12:55:05 Johan Nilsson wrote:
> Alexander Sack wrote:
> > On Fri, Nov 14, 2008 at 9:02 AM, Johan Nilsson
> > <r.johan.nilsson_at_[hidden]> wrote:
> >> Alexander Sack wrote:
> >>>
> >>> Sill question, but why not just copy it in place since its not a
> >>> binary?
> >>
>
> [snip]
>
> >
> >> It's not a silly question. I considered it myself, and might revert
> >> to that unless I can find out another way.
> >
> > I only mention is because bjam manages installed targets and your
> > script is sort of out-of-band in the context in which you described.
>
> The script "is-a" target due to the usage of the make rule (which only,
> quite unnecessarily, copies the script to a gristed target). Or did I
> misunderstand your statement?
>
> >
> >> My main reason for not doing that is that I want to have a
> >> consistent way of installing targets from Jamroot.
> >
> > In either case its consistent. The question is if there is an
> > existing automated way to do what you are asking I suppose...
>
> I'd like to have some way of expressing e.g. <install-type>SCRIPT in
> addition to <install-type>EXE in the install rule (I think).
I think there are few ways to install random files:
- Just add another install target, with the same location, with extra
files as sources, and without <install-type> property
- Teach Boost.Build that .tcl files have a type. Your Jamroot might have:
import type ;
type.register TCL : tcl ;
and add the .tcl script as the source for install -- no need for 'make'
- Make Boost.Build always install things specified in the sources list for
'install' -- even if they have 'wrong' type. I think I've tried to do this,
using some new feature, but in the end approach (1) proved to be easier.
The reason your code does not work is that:
make $(APP) : $(sources) : common.copy ;
when built, does not produce a target of EXE type, but rather of whatever type
is associated with the name of the target. E.g.
make a.cpp : ....... ;
will produce the target of type CPP. In your case, no type is associated with the
name, so target is typeless, not of type EXE.
HTH,
Volodya
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