Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] MSVC (was Build Again) (OT)

Thanks, Leo. I think you are right. The internal builder had a parallel build capability. Haven't tried it though.

On Thu, Apr 29, 2010 at 12:17 PM, Treggiari, Leo <leo.treggiari@xxxxxxxxx> wrote:

For /MP to work, whatever build system is invoking the compiler needs to understand what source files are out of date and what compiler options are used with each source file – i.e. you can only compile multiple files when all of the files are using the same compiler options.

 

There are also some significant restrictions on when /MP can be used.  I don’t remember what they are but the last time I looked it appeared that they made /MP useless in a typical Visual Studio “debug” configuration build.  I think Visual Studio’s parallel build capabilities are pretty much restricted to building different projects in parallel, not individual source files.

 

MBS has 2 “modes”:

1.       Makefile generating – in this case you are still stuck with the make restrictions

2.       Internal builder – I suspect the internal builder could be made to do this if it doesn’t already (I don’t know)

 

Leo

 

From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Doug Schaefer
Sent: Thursday, April 29, 2010 8:57 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] MSVC (was Build Again) (OT)

 

On Thu, Apr 29, 2010 at 4:25 AM, Jesper Eskilson <jesper.eskilson@xxxxxx> wrote:

On 2010-04-28 15:25, Doug Schaefer wrote:

It wouldn't be that complicated. You'd probably do it the same way you
pass the list of object files to the linker.


No, because the linker ALWAYS receives ALL the objects files. The rule typically looks like this

foo.exe: $(OBJS)
        $(LINK) $^ -o $@

If you would do the same with the compiler, you would *always* compile *all* source files. Instead, compiler rules typically look something like this:

.c.h:
       $(CC) -c $< -o $@

This will invoke "cl -c foo.c -o foo.o", once for each source file which is out of date. I cannot see how the /MP option allows cl to parallellize over all the source files it should compile.

This is getting too off-topic for CDT, so I'll stop here. Sorry if I'm not able to make myself clear.

 

No, it's on topic. How we handle this will make a difference on the MSVC integration.

 

We keep talking about nmake, but I imagine VS users will likely want to use CDT's managed build for their projects. Is this something managed build can take care of?


_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



Back to the top