Menu

#8 Spurious "This project is out of date"

open
nobody
None
5
2007-11-14
2007-11-14
No

Starting ROOT (F5) after a successful build still gives the prompt "This project is out of date". Actually I have seen that before and I do not know a way out. It looks like a bug in MSBuild to me. Problem is still there in MSDev2008.

Discussion

  • Gordon Watts

    Gordon Watts - 2007-11-20

    Logged In: YES
    user_id=816712
    Originator: NO

    MSVC in 2005 does not use MSBuild for C++ to build projects, unfortunately (I wish it did -- we coudl write arbitrary plug-ins as the extensibility is much better for that build system than it is for the VC Build platform).

    And this project doesn't use either MSBuild or VCBuild -- rather it runs the command line.

    More when I'm able to run a test.

     
  • Gordon Watts

    Gordon Watts - 2007-11-20

    Logged In: YES
    user_id=816712
    Originator: NO

    As I feared...

    Bug (http://sourceforge.net/tracker/index.php?func=detail&aid=1835439&group_id=208690&atid=1006709) is the same. I've closed it to put everything in here.

    There are a bunch of issues with this.

    First, to repro:

    1. In VC -> Options -> Projects & Solutions -> Build and Run make sure that "On Run, when projects are out of date" that "Prompt to build" is selected.
    2. Build ROOT
    3. Click "debug" or "start w/out debuging"

    The basic reason this happens is that "start" or "debug" actually means "check that the project is up-to-date and then start or debug it" Since this is a nmake project, the only way it knows how to check is to issue the "rebuild". It assumes it will be quick and do nothing when nothing is required. Sadly, for root this is a very large make file which has to be parsed, build instructions assembled, and then run.

    Sadly, this is a feature of the IDE, not a bug.

    Funny asside: MSBuild output verbosity -- I thought from previous conversations with some VC developers at MS that MSBuild wasn't used. Needs further investigation. Ah, this is for all projects, not just VC++; ok, still makes sense.

    This feature is still a bug for this. But I don't know how to solve it. You'd really like Run to correctly request a rebuild when needed, but you would like to have it done fast. The best I've been able to come up with is it should quickly check all files to see if they are out of date. If they are, force a rebuild (or the prompt). Otherwise, let the run go ahead.

    Better ideas? Afraid this won't get fixed for this version of ROOT Builder as this will require either an addin or a whole new package (real work!!). Perhaps some better idea will occur in the meantime.

     

Log in to post a comment.