[vs2015] behavior change: __is_pod(TPair) error

Have anybody managed to build UE with -2015 option?
I got numerous

behavior change: __is_pod(TPair<KeyType,ValueType>) has different value in previous versions


Hi ,

There are still some updates to the source code that need to be made to make it fully compatible with Visual Studio 2015. This is one of the issues that can occur (VS 2015 defines this differently than VS 2013 does, but from what we can tell there is no actual problem with this change in UE4’s source code). I am hoping to find some time soon to create a list of source code updates that are needed to be able build the Engine using VS 2015.

Can you tell us about more exact date?

Unfortunately I have not had a to do much with this this week. It is still something I want to do, but I anticipate it will be a bit time consuming so I need to make sure I can set aside a chunk of time to look into it. I apologize for the delay.

Thanks for the reply, anyway.

Hi ErgoAsh,

Just a quick update. I was able to put together a list of the additional updates needed in the source code in order to build the Engine using Visual Studio 2015. I updated the forum thread that was talking about this topic, and I will try to get that list over to this post as well (it may take me a few minutes to get the formatting all sorted out). Keep in mind that I was able to build the Engine successfully, but it did take a few build attempts. It isn’t a simple process, but it does appear to work.

The resulting Engine should run the Editor, but I would not recommend doing any game project work in this Engine. The main reason for that is because projects built in version 4.9.1 (and now 4.9.2 that came out yesterday) still use the VS 2013 toolchain, and will still do so even if the Engine is built using VS 2015. This will most likely cause you to experience some additional problems. I have not yet found the necessary changes to make projects use VS 2015 as well.

One last thing I would like to mention. The Master branch was fully converted to use VS 2015 by default on Tuesday, and it falls back to use VS 2013 if VS 2015 is not installed. That means that projects created in the Master branch will now use VS 2015. However, the Master branch is a live branch (new commits go into it constantly) and does not receive any testing, so I do not recommend using this for active game project development either.

Here is the list of additional commits that you will need to cherry pick from GitHub in order to be able to build version 4.9.1 of the Engine using Visual Studio 2015. You’ll want to get these in the order they are listed here, since some of the later commits depend on earlier commits.

PS. The last two commits are the ones that correct the error that was mentioned in the original post.

Hmm… I always get the “error : Visual Studio 2012, 2013 or 2015 must be installed in order to build this target.” when I compile UE4 (editor). I also have “ignored” icon on most of the items in VS. I compiled everything with -2015 argument and VS tells me in console that for UE4 subproject it uses:

"..\..\Build\BatchFiles\Build.bat UE4Editor Win64 Development -waitmutex -2015"

What can I do about that?

EDIT: When I try to compile “ignored” subproject I get errors from this topic.

This is happening after you merged in all of the additional commits?

Could you please download this file to your desktop, remove the .txt extension, then run the batch file? It will create a new info.txt file with information about your VS 2015 installation that may provide some information about why the Engine is having trouble locating your VS 2015 installation.

There you go.

Most everything looks normal there at first glance, but could you verify something for me? Could you please check and make sure that your Visual Studio 2015 is installed at the following location: C:\Program Files (x86)\Microsoft Visual Studio

On my computer, it is installed at C:\Program Files (x86)\Microsoft Visual Studio 14.0. If you only have one installation of Visual Studio, you should be fine, but I want to make sure your VS is actually installed in the location where VS140COMNTOOLS says it is.

My folder is fine.

I think I must apologize. I fetch UE code using GitHub Windows which does not support choosing branch on cloning and I’ve got the Release branch… I’ll download right version at the weekend and I will see if it works.

Thanks for help.

If you have not upgraded your GitHub Windows client to GitHub Desktop yet, I would certainly recommend doing so. The new client is much improved, and does include the ability to change which branch you are working in.

Having said that, you should be able to build the Engine from the Release branch in Visual Studio 2015. 4.9.2 does have the experimental support for VS 2015 (as long as you get the additional commits I listed above). If you switch to the Master branch, you should have an easier time building the Engine in VS 2015, but the Engine in the Master branch is potentially unstable.

Hell yeah, it works.

Althrough, I have some questions…

  • WHY should it weight 34GB (I have 128GB SSD and it’s not easy to handle it all)?
  • why shaders are weird (even after counting 4000 shaders (but I have max 100))?
  • why code competition (Intellisense) works partially (sth. doesn’t open method/field tab, sth-> open fields/methodes from this pointer)?
  • why “UClass()” macro gives me an error and including “DeathGameMode.generated.h” also do it (even when I include it IN “DeathGameMode.h”)?

I am guessing you synced the Master branch, correct? As I mentioned previously, the Master branch is untested. It is also unoptimized. It is not unusual for it to be a bit larger in size than the release branch.

I am not sure what is going on with the shaders and Intellisense that you see there. If you have not already done so, could you please make a new AnswerHub post for each of those issues so we can look into those more closely? I do know that Microsoft has made some improvements to Intellisense lately, which should allow it to work better with UE4 specifically.