Fixing warning MSB8029 with CMake and MSVC12

This week I fixed a bunch of warnings on the Humm and Strumm nightly build Windows machine that didn’t actually relate to our code, but instead our build system.  We use a CMake build system with (what I think is) a relatively standard out-of-source build pattern.  On the nightly machine, though, when the engine was built using “cmake –build”, we’d see 16 of the following warnings:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(389,5): warning MSB8029: The Intermediate directory or Output directory cannot reside under the Temporary directory as it could lead to issues with incremental build.

This warning is a useful warning in many cases, where an incremental build could speed up build times, but since we clear the build directory every night on our virtual machines, we can’t do an incremental build.  Even worse, since this is the way CMake builds are structured, we can’t easily turn the warning off.

Googling, I found almost no answers, until I came across this question on MSDN.  Apparently, if you add <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected> to the macros section of your Microsoft.Cpp.x64.user and Microsoft.Cpp.Win32.user files that are hidden away under %LOCALAPPDATA%\Microsoft\MSBuild\v4.0\, these warnings will be globally ignored.  In my case, since this machine only does nightly builds, and will never do incremental builds, that’s a pretty good solution.

I hope if anyone else runs into this problem, this will be helpful.

Humm and Strumm: Move to Sourceforge is (mostly) complete

The past few months have been busy for me with the Humm and Strumm Project.  After we decided to move to Sourceforge from Google Code (seeing as Google Code will stop providing downloads space for projects soon), I’ve had to set up our new Sourceforge project, move our mailing lists, git repository, and wiki to the new host, and set up our new website.

Because Sourceforge gives us project web space, I decided to move our CDash testing dashboard, Doxygen API documentation, and website.  The website’s just a simple Drupal site, but with a custom theme, to match our old blogger website.  As an outsider, I have to say that Drupal has a lot of documentation, but that it’s not terribly helpful to a first-time user.  It took me much longer than I would have liked to get the simple theme going.  Sourceforge is also not ideal for Drupal, because they have low memory usage limits (which I ran into when trying to use Views) they don’t allow outgoing internet connections (so no OpenID login, feed aggregation, or even automatic updates), and their database seems somewhat slow.  Although there are still a few things I have left to do, like integrating the SMTP server with both our Drupal website and our CDash dashboard (which requires a patch to CDash), I think the website is basically done.

This means that I’m able to focus on development now. I think that there will be a release in the next month or two with some major changes that have been brewing since 0.6.1.  I’m also going to look into coercing clang-format into working with the GNU-like style we use.  Emacs’s C++ major mode still hasn’t been properly updated for C++11, so making Emacs use clang-format is a better solution at the moment.