Change in cpp doesn't show up in project (Linux)

Hi All,

I’ve run into following issue while making some changes to my base actor classes in c++. I’ve added a new variable to the .h file, hit compile in the editor and the variable was there, working fine as expected, so far so good, next I’ve build the project, which went very quickly and said “target up-to-date”. Now I’m working with other people on this project and we use perforce for Source Control. I’ve pushed my change to the server and others downloaded it but they can’t see my changes. Another guy who’s using VS downloaded it, build it and pushed it to server and the change was there.

I’m using KDevelop as IDE and any time I try to build it goes very fast and it always says “target up-to-date”. I was also not able to rebuild the project, the -clean apparently doesn’t work.

Has someone similar experience or am I doing something wrong? What files are usually changed when building the project?


No comments at all?

Could you clarify a bit more what exactly the problem is? The change in .h file did not get picked up by other users?


I think my KDevelop is not building the project properly, even though it finishes the build process without errors. It was working before as I have build the same project but since recently, I need to ask some colleagues to build the project for me after I have done any change in the code.

In Visual Studio I would rebuild or clean a project but here using clean is not working, it’s trying to use -clean argument with make.

I was hoping someone who’s using KDevelop has experience with such issues.


What does UBT invocation from KDevelop look like?

I’m not sure to what you’re referring to with UBT invocation, probably haven’t done it yet. Maybe that’s the problem?

I’ve managed to clean the target with “make UE4Editor ARGS=-clean” (yeah, rtfm…) but still after building the project (~1 hour) my changes in code are not visible even on my editor. I do a compile in UE4 and I see in my own editor the new changes but still after pushing the project to repository, no one can see my changes.

I was playing around with the build configuration, changed it from “BuildMeFirst” to “MyProjectNameEditor” and several other variations. At least with the MyProjectNameEditor build configuration, after building the project I see the change now in the editor (without compiling from UE4), but still after I push the project to the server, and someone pulls the latest revision they can’t see the change. Either I’m still using the wrong build configuration or I’m not checking out the right files, currently I’m checking out only the Binaries and Build Folder with all of it’s content before building.

And now UBT runs and finishes without any errors.

Do I understand correctly that if you change the source, the changed sources get into the source control and the other party has the changed file on disk? In other words, the problem is discrepancy between their binaries and their sources?

If this understadning is correct I am baffled why you consider that to be your problem, as it seems to be on their side. Do they rebuild their binaries after having updated the sources?

There are only three people actually changing the c++ part of the project, other work only in blueprint, and only after my changes someone with Visual Studio needs to build the binaries so that everybody can see the changes in blueprint. That’s what irritates me.

Where do blueprint people get their binaries from?

I guess they use the binaries build by the Visual Studio guys?
The Build version of the the source files is located in the Binaries folder, right? Or have I got this wrong?

Binaries folder contains the executables. If you are not recompiling the executable after changing the source file, then the change will not be reflected. It doesn’t really matter if the change was made in Linux editor, Mac editor, or Windows editor, or even in a notepad manually.

It looks like you guys need to sort out who builds the binaries and redistributes them to the rest of the studio. I’d expect that to be done in a centralized way (build farm).

Yeah, I believe it’s much more clearer now where “the problem” is. Thanks for clarifying!