Version 1.3 Released

RudeBuild version 1.3 has just been released. This release adds a wealth of under-the-hood features and improvements (some based on a gracious contribution and inspiration from user Loon Chew; thanks!):

  • Full support for files that are marked as “excluded from build” in Visual Studio, even if they are only marked as such for certain configurations or platforms.
  • RudeBuild now parses the configuration manager data out of the solution files and thus knows how to correctly build solutions with projects where the project configuration names don’t match the solution configuration names. In other words, RudeBuild should now build the project just like you would expect it to πŸ™‚
  • There is a new solution setting that makes RudeBuild automatically specify the /bigobj compiler switch for generated projects. This is useful if you are using large unity files.
  • Support for precompiled header files that reside in a different folder from the project.
  • For Visual Studio 2010 and later projects, RudeBuild now correctly reads and writes out the <ProjectName> tag so that the $(ProjectName) macro works as expected.
  • The installer underwent some reliability fixes. In particular, the custom installation step that copies the RudeBuild.AddIn file to <MyDocuments>\Visual Studio 20??\Addins now correctly runs as the installing user instead of under a computer system account, which allows it to find the MyDocuments folder even if it is located on a user-specific network folder or has special user-specific permissions.
  • After a build, RudeBuild attempts to remove the RudeBuild_XXX.sln from Visual Studio’s most recently used file list.
  • For projects that contain both .c and .cpp files, RudeBuild now makes sure to never include them in the same unity file. Instead, the .c files get merged into a .c unity file, and similarly the .cpp files get merged into a .cpp unity file. This is because Visual Studio uses the file extension to determine whether to do a C or a C++ compile, and there are slight differences between the two.
  • Visual Studio 2012 support.

You can download the latest installer from the SourceForge project page located hereΒ https://sourceforge.net/projects/rudebuild/files/

I have some more plans to make RudeBuild more user friendly, in particular when it comes to excluding files from the unity build or making certain files mutually exclusive, i.e. they shouldn’t end up in the same unity file. Stay tuned!

9 thoughts on “Version 1.3 Released

  1. Pingback: Martin Codes – RudeBuild Version 1.3 Released

  2. Hello ,

    I have some issues with rudebuild,

    My First issue : I build my solution with RudeBuild
    It try run my application directly via visual studio IDE ( shortcut F5) , visual studio build again the project.

    Second: I modify one file in c++ project but i try to rebuild project , rudebuild does not take into account my changes.

  3. 1) There’s no good solution to this that I’ve found. The problem is that RudeBuild circumvents the usual VS build system and so VS doesn’t know that the project is actually built. When the dialog asking you to build comes up when you hit F5 you can disable that dialog for good. That’s what I do locally. Just make sure the RudeBuild succeeded.

    2) I’ve never seen that happen. This is most likely not an issue with RudeBuild, but if you send me your project I can take a look at it.

  4. Hi there, great little plugin. I have a few comments and suggestions, when trying to include this into my project
    1. What was mentioned above with rudebuild not taking changes into account, I can reproduce that bug, in Visual Studio 2012. It seems like when I make changes to a file and do “build project”, it doesn’t do a save before it performs the build.
    2. I would really love an “exclude project” feature, rather than exclude cpp files from project. Especially when having a large solution with lots of projects, it would be useful for me to disable all projects and enable them one by one, especially as some projects come from external sources and may be especially troublesome.
    3. in the “exclude file” selector, having multiselect would be really really handy πŸ™‚
    4. Finally, I had a bug causing in GetAllIncludeFiles, as one project had more than one ItemGroup containing CLIncludes – the SingleOrDefault() function call caused an exception. It was easy to fix in my project once I knew the problem, but there was just no warning. Maybe have the exception print out a callstack or some more information? (as there may be other areas that could cause the same problem)

    • 1. Is fixed in git.
      2. I’ve had that on the backlog for quite some time. I hope I’ll get around to it sometime soon. Contributions are more than welcome, though πŸ™‚
      3. That should be easy. I’ll see if I can fix that. I have some plans to completely rework the exclude dialog soon.
      4. That should also be fixed in git. If not, please send me the .sln and .vcxproj files that are causing the problem, so I can have RudeBuild correctly parse these cases.

      • Great, I will check in git for the fixes. Also, the multiselect issue got a little smaller when I realized I can use spacebar to select something, and I don’t have to close the select window after each selection (I just can’t use ctrl+click to select a block, ctrl+arrow to select or ctrl+a for all) – with this I can easily work around my “exclude project” issue.

        One final suggestion: I found one project that uses __LINE__ to create unique IDs, but this of course tends to cause collisions. If the generator makes a #undef _RUDE_BUILD_UNITY_FILEID /#define _RUDE_BUILD_UNITY_FILEID xxx between each project, it would be easy to create macros that create unique IDs.

        I may work on this if I get time, and if I do, I’ll definitely post it

  5. And to clarify, the “exclude project” should just mean that it uses the regular project. I’m not sure if this would cause dependency issues if that project is referring to other projects, but maybe all those dependent projects would also have to be excluded, then?

  6. First of all, Rudebuild is a great tool! Thank you very much.
    I do also roll my own UnityBuild Addin but your RudeBuild is much more flexible, so keep up the good work! πŸ™‚

    However, I also have a problem when I try to run RudeBuild with Visual C++ 2012 Express (which is basically not allowed any Addins, but i thought it will work through Console command?)

    Here is an error
    “RudeBuild, Version 1.3.0.0
    A unity C++ build tool for Visual Studio developed by Martin Ecker.
    This is free, open source software under the zlib license.
    Copyright ΒΈ Martin Ecker/PlayGroovy 2011-2013

    For more information and latest updates please visit:
    http://rudebuild.sourceforge.net
    Arguments: -s W:\MyGitRepo\Prototype2013\GameFrameworkCpp\FW\Project\GameEngine\GameEngine2012.sln -c Debug|Win32 -p GameEngine

    ERROR: Object reference not set to an instance of an object.

    Any idea? πŸ™‚

    PS: Could I make a request for the VS2013 version of Rudebuild as well?
    Many thanks!
    Aik

    • Hi, I’m glad you find RudeBuild useful. Unfortunately, I don’t have access to either Visual C++ 2012 Express nor Visual Studio 2013 at the moment, so I can’t make any promises of adding support.
      The exception you’re getting is basically a null reference exception. I fixed a few of those recently, so possibly if you grab latest from the git repository and build RudeBuild yourself this is fixed. Alternatively, you can always try to debug it and figure out why the exception gets thrown by using the command line printed in the above output next to “Arguments:”.
      Cheers,
      Martin

Leave a Reply

Your email address will not be published. Required fields are marked *