I'm trying to use Boost.Build to build our existing project based currently on make.

In one library, containing many code-generated source files the linking action fails due to the large list of object files.

In contrast to building with make the linker command line is blown up in Boost.Build by the relative path names to every .o-file.

With make we build directly in the directory, where the .o-files are.

Is it possible with Boost.Build to also change into the directory with the .o-files and execute the link command there with pure object file names (path-part stripped off)?

How can I do this?
Or is there an other solution?

Here the corresponding part of bjam output:
--------
gcc.compile.c++ bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDSkexpdataselProxy.o
gcc.compile.c++ bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDAazuordnungProxy.o
gcc.link.dll actions too long (max 102400):

    "g++"    -o "bin/gcc-4.1.0/debug/address-model-64/threading-multi/libAmisBD.so" -Wl,-h -Wl,libAmisBD.so
             -shared -Wl,--start-group "bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDSkconvversionProvider.o"
             "bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDInstparamProvider.o"
             "bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDFreigabeparamBroker.o"
             ...
             "bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDAazuordnungProxy.o"
             "bin/gcc-4.1.0/debug/address-model-64/threading-multi/BDKursserviceumrechnungCacheManager.o"
             -Wl,-Bstatic  -Wl,-Bdynamic -lrt -Wl,--end-group -g -pthread -m64
--------
Analysis:
find bin/gcc-4.1.0/debug/address-model-64/threading-multi -name "*.o" | wc
   2309    2309  178435

cd bin/gcc-4.1.0/debug/address-model-64/threading-multi
find . -name "*.o" | wc
   2309    2309   60676

Werner Schweizer