help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: flushing output in make


From: ma
Subject: Re: flushing output in make
Date: Mon, 17 Jul 2006 21:22:06 +0100

>
> This is an automatically generated makefile?  Why not split the object
> names among several variables when the makefile is generated and then
> repeat the commands for each variable as necessary, ala:
>
> rtLibModules0 = ...
> rtLibModules1 = ...
>
> rtlib.lib $(rtLibModules0) $(rtLibModules1) ...
>     @echo Building $@, please wait
>     rm -f address@hidden
>     $(AR) -qur address@hidden $(rtLibModules0)
>     $(AR) -qur address@hidden $(rtLibModules1)
>     ...etc
>     mv address@hidden $@
>
> Other options that come to mind include
> - break the library into multiple smaller libraries
> - drop the echo as superfluous: when  the make output pauses you
>  know its building the library.  Don't you have better things to be
>  doing that watching compilations?
> - stop using an OS or tools which impose limits lower than you like
>
>
>> As I am working on an add on project and the original product
>> shipped with gmake version 3.8, I can't update to gmake 3.81
>
> 3.8?  You mean 3.80?  Version numbers are not decimals: "version 3.80"
> means "major version 3, minor version 80" and _not_ "version 3 and
> 80/100th"
>
>
> Philip Guenther

Thanks for your advices! Unfortunately I can not change windows :( and look 
for a better OS, but I wish I could!

It is not a very important problem. No message No problem as long as it 
builds its output, everybody is happy.

But I still could not understand why it doesn't work?

Let's see how the system works:

What I understand from your explanation on how make process a target is 
that: . It first do all of the expanding. Assuming the following make file:



modules= a.o b.o c.o

mylib.lib: $(modules)

    @echo starting...

    $(foreach n, $(modules), $(shell $(AR) -qur $@ $(n)))





Make first expanding it to something such as this:



modules= a.o b.o c.o

mylib.lib: a.o b.o c.o

    @echo starting...

    $(AR) -qur $@ a.o

    $(AR) -qur $@ b.o

    $(AR) -qur $@ c.o



And then create the target. To create the target, it executes the following 
command sequentially:

@echo starting

ar -qur mylib.lib a.o

ar -qur mylib.lib b.o

ar -qur mylib.lib c.o


So why the output of echo comes after that all AR command finished?

I am assuming that the time consuming commands are $(AR) and the expansion 
doesn't take so much Am I wrong?



Best regards











reply via email to

[Prev in Thread] Current Thread [Next in Thread]