UBT not taking into account module header changes

Hi,

When you have module (not the game module, for example an OSS modulde), if you built with some errors in the CPP file and you need to change the Header file, it is not taken into account without “full rebuild”.

Put a error in a cpp file so the build fails, change a signature of a function, rebuild, the new signature is not taken into account.

Hi Elvince,

In which version of the Engine are you seeing this behavior occur? I tried to replicate this in 4.7.5 built from source code and did not see the results that you described. These are the steps that I followed:

  • Create new code project.
  • Add a new runtime module to the project.
  • Add a new code class to the new module.
  • Add the function void TestFunction() to the new class.
  • Build the project successfully in Visual Studio.
  • Change the definition of TestFunction in the .cpp file to bool TestFunction(), and added a return true; line.
  • Build the project in Visual Studio (build fails).
  • Change the function declaration to bool TestFunction().
  • Build the project successfully in Visual Studio.
  • Add an int32 parameter in the .cpp file.
  • Build the project in Visual Studio (build fails).
  • Add an int32 parameter to the function signature.
  • Build the project successfully in Visual Studio.

Am I doing anything differently from what you were doing?

Tim

in end of march, I would say that I was in 4.7.3?4? I don’t remember exactly.

The steps you are descriing are the correct ones.

What if the TestFunction you set already return a bool and you need to return a int now? How react UBT?

If I remember, properly, I changed something like a uint8 to int32 or I change a parameter type. It’s 3 weeks ago, I don’t remember eactly.

If those extra testing are working correctly, I will try to reproduce it again on my side on 4.7.5.

Thanks,

I just tried again with the following additional steps:

  • Changed TestFunction in the .cpp file from bool TestFunction(int32 TryThis) to int32 TestFunction(int32 TryThis). Changed return line appropriately.
  • Built the project (build failed).
  • Changed the function signature in the .h file to int32 TestFunction(int32 TryThis).
  • Built the project (build succeeded).
  • Changed the function in the .cpp file to int32 TestFunction(bool TryThis).
  • Built the project (build failed).
  • Changed the function signature in the .h to int32 TestFunction(bool TryThis).
  • Built the project (build succeeded).

I also tried changing the int32 return value to uint8, as well as changing an int32 parameter to uint8, and saw the same results.

It is possible that there may be some slight differences between how we set up the modules we are testing and that may be why we are seeing different results. If you happen to have a small test project where this issue is occurring, would it be possible to have that uploaded?

Tim

Hi Elvince,

We have not heard back from you for a few days. Were you able to reproduce this issue again? I will mark this post as resolved for internal tracking purposes, but if you are able to provide any additional information to help us reproduce this issue, please feel free to re-open this post.

Tim

Ok If I get more information to help the repro, I will do it
Thanks,