creating multiple targets

View: New views
5 Messages — Rating Filter:   Alert me  

creating multiple targets

by Stefan Zimmer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

I have some projects, managed in an workspace like this:

Jamroot ( workspace )
  - Lib1
    - Jamfile
  - Lib2
    - Jamfile
  - exe1
    - Jamfile
  - exe2
    - Jamfile

Everything works fine, except that I want to have a target in my Jamroot, to build all executables with one strike. I want to go to my workspace folder and type something like bjam all, and exe1 and exe2 will be created.

How can I do that?

Thanks and greetz
 Zingel
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Re: creating multiple targets

by Steven Watanabe-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

AMDG

Stefan Zimmer wrote:

> I have some projects, managed in an workspace like this:
>
> Jamroot ( workspace )
>   - Lib1
>     - Jamfile
>   - Lib2
>     - Jamfile
>   - exe1
>     - Jamfile
>   - exe2
>     - Jamfile
>
> Everything works fine, except that I want to have a target in my Jamroot, to build all executables with one strike. I want to go to my workspace folder and type something like bjam all, and exe1 and exe2 will be created.
>
> How can I do that?
>  

Use the alias rule:

alias all : exe1 exe2 ;

In Christ,
Steven Watanabe

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

Parent Message unknown Re: creating multiple targets

by Stefan Zimmer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Steven Watanabe wrote:
>
> Use the alias rule:
>
> alias all : exe1 exe2 ;
>
> In Christ,
> Steven Watanabe

Thanks, this works, but not as expected.
All my targets ( exe1 and exe2 ) get builded. But now the executables are only in their cryptic directorys "exe1/bin/gcc...".
I have written an install bin rule in each Jamfile, which shortens the path to $(BASE_DIR)/bin/[release or degug].
this works fine, if I build the targets directly, but it doesn't work, with that alias rule.
Any idea to solve this?

Tanks,
 Zingel
--
Neu: GMX DSL bis 50.000 kBit/s und 200,- Euro Startguthaben!
http://portal.gmx.net/de/go/dsl02
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Re: creating multiple targets

by Juraj Ivančić :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Stefan Zimmer wrote:

> Steven Watanabe wrote:
>> Use the alias rule:
>>
>> alias all : exe1 exe2 ;
>>
>
> Thanks, this works, but not as expected.
> All my targets ( exe1 and exe2 ) get builded. But now the executables are only in their cryptic directorys "exe1/bin/gcc...".
> I have written an install bin rule in each Jamfile, which shortens the path to $(BASE_DIR)/bin/[release or degug].
> this works fine, if I build the targets directly, but it doesn't work, with that alias rule.
> Any idea to solve this?

You can put targets which install exes into alias i.e.

alias all : install_exe1 install_exe2 ;

A simpler solution would be to replace alias with
install (untested):

install all
:
     exe1
     exe2
:
     <variant>debug:<location>bin/debug
     <variant>release:<location>bin/release
;



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

Re: creating multiple targets

by Phillip Seaver :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Stefan Zimmer wrote:

> Steven Watanabe wrote:
>  
>> Use the alias rule:
>>
>> alias all : exe1 exe2 ;
>>
>> In Christ,
>> Steven Watanabe
>>    
>
> Thanks, this works, but not as expected.
> All my targets ( exe1 and exe2 ) get builded. But now the executables are only in their cryptic directorys "exe1/bin/gcc...".
> I have written an install bin rule in each Jamfile, which shortens the path to $(BASE_DIR)/bin/[release or degug].
> this works fine, if I build the targets directly, but it doesn't work, with that alias rule.
> Any idea to solve this?
>
> Tanks,
>  Zingel
>  

You could do something like this:

    JAMFILE = [ modules.peek : JAMFILE ] ;
    local search_dirs = [ MATCH (.*)/.* : [ glob */$(JAMFILE) ] ] ;
    for local d in $(search_dirs)  {
        ECHO "Will build project in" $(d) ;
        build-project $(d) ;
    }


It should build the entire project (as if you had run bjam from that
directory) for each sub-directory which has a jamfile.  That may build
more than you want, but it sounds like that should work for you.  The
"ECHO" is just in there so you can see what it does.

JAMFILE on my system is "[Bb]uild.jam [Jj]amfile.v2 [Jj]amfile.jam", so
it won't work if your JAMFILE is the same and your jamfiles are named
"Jamfile".

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