Boost logo

Boost-Build :

From: Srinivasan Saivenkata S (srinivasans_at_[hidden])
Date: 2006-06-13 02:24:56


Thanks for sending me the URL link about Comet. In the Jamroot is it okay if
I specify

<include>bin/msvc-8.0/release as <include>msvc/release because I have only
VC++ 6.0 compiler installed on my system.

Regards,
Srinivasan

-----Original Message-----
From: boost-build-bounces_at_[hidden]
[mailto:boost-build-bounces_at_[hidden]] On Behalf Of Andrei Melnikov
Sent: Tuesday, June 13, 2006 11:36 AM
To: Boost.Build developer's and user's list
Subject: [Boost-build] BBv2 and Comet

I'm trying to use use Comet library and Boost.Build in my project.

Comet (http://lambdasoft.dk/comet) is language binding between COM and
C++. It allows you to do both COM client and COM server programming,
without any dependency on either ATL or MFC. In other words Comet is a
replacement for ATL.

Comet uses its own tlb2h.exe tool to generate C++ headers from type
libraries instead of relying on headers generated by MIDL compiler or
by #import directives.

The following source files are required to build a simple Automation server
dll:

minicomet.cpp
minicomet.idl
minicomet.def
minicomet.rc

Build process is the following:

1) idl compiler produces minicomet.tlb from minicomet.idl
2) tlb2h produces ARMO.h from minicomet.tlb
3) c++ compiler produces minicomet.obj from minicomet.cpp, minicomet.h
and different comet, Platform SDK and C Runtime headers.
4) resource compiler produces minicomet.res from minicomet.rc and
minicomet.tlb
5) linker produces minicomet.dll from minicomet.res, minicomet.obj,
minicomet.def, C Runtime library and various PSDK libraries.

Here's the best Jamroot I could achieve:
project : default-build <debug-symbols>on <optimization>off ;

actions comet-tlb2h
{
        tlb2h -h- $(>[0]:W) -o $(<[0]:D) -r $(<[0]:B)
}

make ARMO.h : minicomet.tlb : comet-tlb2h ;
mstypelib minicomet.tlb : minicomet.idl ;

lib minicomet_test
        :
                minicomet.cpp
                /site-config//minicomet
                minicomet.rc
        :
                <include>bin/msvc-8.0/release
                <find-static-library>ole32
                <find-static-library>advapi32
                <find-static-library>user32
;

But it has several flaws.

1) If I omit "<include>bin/msvc-8.0/release", the generated ARMO.h
won't be found by C++ compiler
2) minicomet.tlb is an intermediate build product. So, theoretically,
it's redundant, and we should be able to say just

make ARMO.h : minicomet.idl : comet-tlb2h ;

3) There are two ways to make headers out of idl files:

* midl
* midl + idl2h

There should be a way to tell explicitly how ARMO.h should be built to
avoid generator conflicts.

Now midl compiler always produces its own header due to hardcoded
command line options in midl.jam. This should be customizable.

I hope that someone will be able to help with
"<include>bin/msvc-8.0/release". The rest issues aren't that important
for now.

Andrei
_______________________________________________
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost-build


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