Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2006-02-28 01:30:35


Hi Miguel,
> Hi there, I have a shared library that builds like
> this:
>
....
> Then I am trying to install it and rename the
> installed library this way:
>
> stage MY_Blend_plugin_install
>
> : MY_Blend
> : <location>$(LIBS_TOP)/install/maya/plugins
>
> <name>MY_Blend.mll
> ;
...

> Unfortunately I am getting a weird errror:
> "<name> property cannot be specified when staging
> several targets"

Well, on Windows, DLL is a pair of targets -- DLL and import lib. On Linux,
with current CVS, you'd get a different error:

   In 'install': <name> property specified with target that requires relinking

Generally speaking, on Linux, if you change a name of a shared library, you
need to relink all other libraries and executable files that refer to it.

Of course, this is not needed for plugins, but Boost.Build does not know if
this is plugin, or not, and I don't know an easy way to detect if there are
other libraries linking to this one. And this restriction probably does not
makes sense for Windows, but we don't distinguish this case yet.

Am I right that this is plugin for a specific tool, and the extension should
always be ".mll". Then you can just do this:

  import type ;
  type.register MLL : mll : SHARED_LIB ;

you can put this code in Jamroot, and then use this:

  mll MY_Blend
    # sources
    : [ glob ./src/*.cpp ]
      Foundation OpenMaya OpenMayaAnim
    :
      <include>./src
      <link>shared
    ;

That's from memory, but should work, and won't require renaming library on
install time.

- 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