Boost logo

Boost-Build :

From: Neil Gower (ngower_at_[hidden])
Date: 2006-04-20 18:52:55


I'm still new to boost-build, and I'm trying to set up a project in which the
final output on Windows is a .mll file (Maya plug-in), which is just a dll
with a different extension. On Linux, the build should produce a regular .so
file. It doesn't matter to me whether this is done during linking or
staging, but so far I've been unable to convince bjam to do either for me.

Below are the interesting bits of what I've tried:

# Create a type for .mll files?
type.register MAYA_PLUGIN : mll : SHARED_LIB : main ;
type.set-generated-target-suffix MAYA_PLUGIN : <os>NT : mll ;
type.set-generated-target-suffix MAYA_PLUGIN : <os>UNIX : so ;

# build
lib MyExample
     : [ glob ./*.cpp ]

# copy files
stage MyExample_plugin
       : MyExample
       : <location>$(TOP)/install/maya_plugins

Removing the <name> property from the stage rule and switching MAYA_PLUGIN
back to SHARED_LIB, this builds fine on both Linux and Windows, but the
resulting file is a .dll on Windows. With what I've got above, I get this error:

C:/build-system/tools\stage.jam:133: in construct from module
error: <name> property cannot be specified when staging several targets

It seems the stage rule thinks I want to stage all of the "MyExample" files,
when in fact I just want the lib. Unfortunately, I haven't figured out how
to say that in my Jamfile.

So I think it comes down to how to either:

(a) Tell the lib rule it's building a MAYA_PLUGIN type, which is a .mll on


(b) Tell the stage rule I only want to copy (and rename) the .dll file from
the build dir.

Any help is greatly appreciated!



Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at