godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.46k stars 21.07k forks source link

[3.0] Compiling using MSVC fails 2 times #8357

Closed Ahmed0425 closed 7 years ago

Ahmed0425 commented 7 years ago

Operating system or device - Godot version: windows 10 - Visual studio 2015 update 3 - Godot engine 3.0 alpha

Issue description:

x86 x64 Cross tools command prompt were used compiling through MSVC is very fast but it fails 2 timed and succeeds in the third time (succeeds in the first time using MinGW)

Steps to reproduce: Some commits that caused the Travis CI build to fail made Compiling through MSVC fails as well (at least in the first and second time I'm sure that one of them was https://github.com/godotengine/godot/commit/1c480698ce0e881cbd28f1f0ddba95cee74ca834

Link to minimal example project:

Zylann commented 7 years ago

Would this be caused by files being generated too late? (explaining why a few reruns makes it work)

bojidar-bg commented 7 years ago

Sounds related to #5042

RayKoopa commented 7 years ago

Yes, -jx is causing this issue.

On a related note, VS2015 or VS2017 freeze since recently after a full build due to the exorbitant number of warnings created (mostly C4514), I had to build with warnings=no to not freeze up my IDE.

Zylann commented 7 years ago

Can't these warning be fixed instead of silenced?

RayKoopa commented 7 years ago

You want to make all inline functions non-inline?

Zylann commented 7 years ago

The warning says "'function' : unreferenced inline function has been removed", which means it's unused. If it's unused, how about removing it?

RayKoopa commented 7 years ago

Because it complains about ~15000 inline functions, and yes, they're surely not "unused". I don't even know why it complains. I uploaded a build log which freezes VS here (scons p=windows -j8). That are 158 MB of raw text! C4820 is another useless warning, nobody cares about padding in data structures.

Zylann commented 7 years ago

Looks like these come from macros like GDCLASS or VARIANT_ENUM_CAST, which define hidden functions that nobody uses? (and then you would get the warning for all Godot classes). I get that some might not be used because using these macros is "all-or-nothing"...

However: d:\projects\git\godot\core\hashfuncs.h(68): warning C4514: 'hash_djb2_one_32': unreferenced inline function has been removed Do we really don't use this hashing function? I've seen it used in a few places, did it change now?

Other random functions like GradientTexture::get_color_at_offset are found as unused... so there is both "legit-unused" and "forgotten" stuff.

RayKoopa commented 7 years ago

I guess so, but because of the things the compiler just can't understand, the warning is more useless than helpful (and when used in VS, harmful).

Zylann commented 7 years ago

They would be useful if we could find a way to separate those we know as "not understandable" and the others, I feel turning them off globally is a bit extreme. No idea how easy it would be though...

bojidar-bg commented 7 years ago

Is this still valid?

vnen commented 7 years ago

This is originally a duplicate of #5042. About the warnings freezing the IDE, it would be better to open a new issue if it's still a problem.