Re: [cmake-developers] Strange VS output file field

2011-10-06 Thread James Bigler
On Wed, Oct 5, 2011 at 3:45 PM, James Bigler jamesbig...@gmail.com wrote:

 On Fri, Aug 19, 2011 at 10:41 AM, David Cole david.c...@kitware.comwrote:

 On Thu, Aug 18, 2011 at 4:56 PM, David Cole david.c...@kitware.com
 wrote:
  On Thu, Aug 18, 2011 at 1:30 PM, David Cole david.c...@kitware.com
 wrote:
  On Tue, Aug 9, 2011 at 6:19 PM, James Bigler jamesbig...@gmail.com
 wrote:
  I recently switched to 2.8.5 and noticed something strange.
 
  I have several files that build into a Debug|Release agnostic place.
 If I
  build it in one then switch to the other the files don't regenerate,
 because
  the build rule has been satisfied.
 
  With CMake 2.8.5 and VS 2010 I noticed something strange.  It wanted
 to
  build the files in both debug and release.  I then looked at the
 vsproj
  files and I noticed this:
 
Outputs
 
 Condition='$(Configuration)|$(Platform)'=='RelWithDebInfo|Win32'C:\code\build-32-vs10-c40\lib\myfile_build.txt;%(Outputs)/Outputs
 
  %(Outputs)???  Why is that in there.  If I manually remove $(Outputs)
 then
  it stops rebuilding my files.
 
  James
 
 
  ___
  cmake-developers mailing list
  cmake-developers@cmake.org
  http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
 
 
 
  The %(Attribute) notation means inherit the value from the same
  element in my parent. So for a file's attribute, it typically
  inherits the value from the same named attribute in the project.
 
  In this case, I'm not entirely sure why it's there, but it's been
  there right from the very first commit adding the VS 10 generator to
  CMake: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7491f529
 
  I can't think of the reason why it might be needed off the top of my
  head, so ... I'll try to remove it and see if all the tests pass. If
  they do, I suppose it should be ok to remove it. Does anybody else
  reading this thread have any other information?
 
  Thanks,
  David
 
 
  I constructed a custom build command that runs a batch file and
  outputs a text file solely via the VS10 IDE... and there was no
  %(Outputs) in the vcxproj file. So I think it's safe to remove this.
  I'll push a change that does that.
 
  Thanks for the report,
  David
 

 This bug is quite possibly a report of the same thing, although, as
 noted in the bug, I could not reproduce the problem:
 http://public.kitware.com/Bug/view.php?id=12302


 Drat!

 This doesn't actually seem to help.  I'll see if I can create a smaller
 test program that illustrates the issue.

 Does anyone know of a way to figure out why VS wants to build something
 similar to a make -d?

 It would be really helpful to understand what is causing VS to rebuild
 stuff.

 James


I've been buried in this for the past day and I think I might know what is
going on.  Unfortunately there doesn't appear to be an elegant solution to
this other than perhaps filing a bug with Microsoft.

From my experimentation, it appears that custom build rules require being
registered in the custombuild.command.1.tlog file that is put into the
%(Intermediate Directory) location of the project.  Since this location is
generally different for Debug and Release builds, each configuration needs
to run *all* the custom build rules at least once to populate this file.
This the output from MSBuild when more detailed logging is enabled.

 Forcing rebuild of all source files due to missing
command tlog
D:\win7x64\bugs\cmake-extra-build\VS-2010\cat-file\Release\custombuild.command.1.tlog.
(TaskId:14)

I'm not sure how to work around this aside from putting all non
configuration dependent targets into a special project that has an
intermediate directory that isn't %(Configuration) dependent.  That doesn't
seem like a lot of fun.

Why MSBuild can't simply just populate the files without actually running
the build commands if the dependencies are met seems like a little bit like
a missing feature, however it could be the mechanism to determine
dependencies relies on that file being populated.

Unfortunately for me where I have *many* non-configuration dependent custom
build rules I have to rebuild all the files for each configuration. :(

James
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Re: [cmake-developers] Strange VS output file field

2011-08-19 Thread David Cole
On Thu, Aug 18, 2011 at 4:56 PM, David Cole david.c...@kitware.com wrote:
 On Thu, Aug 18, 2011 at 1:30 PM, David Cole david.c...@kitware.com wrote:
 On Tue, Aug 9, 2011 at 6:19 PM, James Bigler jamesbig...@gmail.com wrote:
 I recently switched to 2.8.5 and noticed something strange.

 I have several files that build into a Debug|Release agnostic place.  If I
 build it in one then switch to the other the files don't regenerate, because
 the build rule has been satisfied.

 With CMake 2.8.5 and VS 2010 I noticed something strange.  It wanted to
 build the files in both debug and release.  I then looked at the vsproj
 files and I noticed this:

   Outputs
 Condition='$(Configuration)|$(Platform)'=='RelWithDebInfo|Win32'C:\code\build-32-vs10-c40\lib\myfile_build.txt;%(Outputs)/Outputs

 %(Outputs)???  Why is that in there.  If I manually remove $(Outputs) then
 it stops rebuilding my files.

 James


 ___
 cmake-developers mailing list
 cmake-developers@cmake.org
 http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers



 The %(Attribute) notation means inherit the value from the same
 element in my parent. So for a file's attribute, it typically
 inherits the value from the same named attribute in the project.

 In this case, I'm not entirely sure why it's there, but it's been
 there right from the very first commit adding the VS 10 generator to
 CMake: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7491f529

 I can't think of the reason why it might be needed off the top of my
 head, so ... I'll try to remove it and see if all the tests pass. If
 they do, I suppose it should be ok to remove it. Does anybody else
 reading this thread have any other information?

 Thanks,
 David


 I constructed a custom build command that runs a batch file and
 outputs a text file solely via the VS10 IDE... and there was no
 %(Outputs) in the vcxproj file. So I think it's safe to remove this.
 I'll push a change that does that.

 Thanks for the report,
 David


This bug is quite possibly a report of the same thing, although, as
noted in the bug, I could not reproduce the problem:
http://public.kitware.com/Bug/view.php?id=12302
___
cmake-developers mailing list
cmake-developers@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Strange VS output file field

2011-08-18 Thread David Cole
On Tue, Aug 9, 2011 at 6:19 PM, James Bigler jamesbig...@gmail.com wrote:
 I recently switched to 2.8.5 and noticed something strange.

 I have several files that build into a Debug|Release agnostic place.  If I
 build it in one then switch to the other the files don't regenerate, because
 the build rule has been satisfied.

 With CMake 2.8.5 and VS 2010 I noticed something strange.  It wanted to
 build the files in both debug and release.  I then looked at the vsproj
 files and I noticed this:

   Outputs
 Condition='$(Configuration)|$(Platform)'=='RelWithDebInfo|Win32'C:\code\build-32-vs10-c40\lib\myfile_build.txt;%(Outputs)/Outputs

 %(Outputs)???  Why is that in there.  If I manually remove $(Outputs) then
 it stops rebuilding my files.

 James


 ___
 cmake-developers mailing list
 cmake-developers@cmake.org
 http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers



The %(Attribute) notation means inherit the value from the same
element in my parent. So for a file's attribute, it typically
inherits the value from the same named attribute in the project.

In this case, I'm not entirely sure why it's there, but it's been
there right from the very first commit adding the VS 10 generator to
CMake: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7491f529

I can't think of the reason why it might be needed off the top of my
head, so ... I'll try to remove it and see if all the tests pass. If
they do, I suppose it should be ok to remove it. Does anybody else
reading this thread have any other information?

Thanks,
David
___
cmake-developers mailing list
cmake-developers@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Strange VS output file field

2011-08-18 Thread David Cole
On Thu, Aug 18, 2011 at 1:30 PM, David Cole david.c...@kitware.com wrote:
 On Tue, Aug 9, 2011 at 6:19 PM, James Bigler jamesbig...@gmail.com wrote:
 I recently switched to 2.8.5 and noticed something strange.

 I have several files that build into a Debug|Release agnostic place.  If I
 build it in one then switch to the other the files don't regenerate, because
 the build rule has been satisfied.

 With CMake 2.8.5 and VS 2010 I noticed something strange.  It wanted to
 build the files in both debug and release.  I then looked at the vsproj
 files and I noticed this:

   Outputs
 Condition='$(Configuration)|$(Platform)'=='RelWithDebInfo|Win32'C:\code\build-32-vs10-c40\lib\myfile_build.txt;%(Outputs)/Outputs

 %(Outputs)???  Why is that in there.  If I manually remove $(Outputs) then
 it stops rebuilding my files.

 James


 ___
 cmake-developers mailing list
 cmake-developers@cmake.org
 http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers



 The %(Attribute) notation means inherit the value from the same
 element in my parent. So for a file's attribute, it typically
 inherits the value from the same named attribute in the project.

 In this case, I'm not entirely sure why it's there, but it's been
 there right from the very first commit adding the VS 10 generator to
 CMake: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7491f529

 I can't think of the reason why it might be needed off the top of my
 head, so ... I'll try to remove it and see if all the tests pass. If
 they do, I suppose it should be ok to remove it. Does anybody else
 reading this thread have any other information?

 Thanks,
 David


I constructed a custom build command that runs a batch file and
outputs a text file solely via the VS10 IDE... and there was no
%(Outputs) in the vcxproj file. So I think it's safe to remove this.
I'll push a change that does that.

Thanks for the report,
David
___
cmake-developers mailing list
cmake-developers@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers