[Qt-creator] QtCreator support for Unreal Engine 4

Tobias Hunger tobias.hunger at gmail.com
Mon Mar 5 10:20:40 CET 2018


Hi San,

Before we continue: Creator supports more than just qmake as a build
system. Is there any that works better?

On Sat, Mar 3, 2018 at 9:57 AM, Sander Smid <sander.smid at gmail.com> wrote:
> Thanks Tobias for your reply.
>
> So I've been looking into what QtCreator already provides, what steps are
> already done on the UE4 side of things and what is missing to get proper
> integration. What UE4 currently provides is a qmake project file (.pro) and
> a few project include files (.pri) which mainly list all the project source
> and header files. The UE4.pro file does contain some description of targets
> but not all of them are picked up when the user configures the project file.
> All of the settings that actually deal with defines (UE4Defines.pri) seem
> stubbed and don't contain actual build defines. Probably because it is
> required by qmake but simply doesn't have a purpose as UE4 uses its own
> build system.
>
> The current UE4 documentation recommends each user needs to create a
> UE4.pro.user file in which the qmake build and clean steps are removed and
> (manually) replaced with a make command. This is all described in an array
> of "ProjectExplorer.Project.Target" structures in the UE4.pro.user that
> define the build and run settings. As a quick test I moved that part over to
> a UE4.pro.shared file as that file is intended to be shared. Unfortunately
> QtCreator prompts me to configure the project so I assume this isn't
> supported.

Moving that to a .shared file will not work: The kit ids will not
match and then get ignored. Kit-specific stuff like build steps
currently can not effectively get shared in creator.

> The alternative would be to generate the UE4.pro.user file in a similar way
> the .pro file is generated (I should have all the information at that the
> moment the .pro and .pri files are being generated) however I got the
> impression that is not the recommended way to go about this.

I doubt that would work for the same reason as the .shared files fail:
You do not know the right kit Ids to put into the .user file.

> This bring me to the following set of questions:
>
> Fixing the qmake build steps:
>
> Each user currently needs to define their kits (which makes sense as it
> includes build target locations) but after generating them not all the
> targets as described in UE4.pro are not all available. Can you what steps
> are missing here?

No idea. Everything in a .pro file should get picked up.

> Can you see any reason why the qmake project files are not working?

Bugs? :-)

I am actually not sure whether creator is supposed to show aux targets or not.

> I know
> this is a broad question so feel free to skip this.
> Is there any other place than the .pro.user files where QtCreator stored
> information about project configurations that might be relevant (e.g
> ~/.config)?

No. All the project-specific data is stored in the .user-file.

> Use qmake project as a shell for code navigation and focus on getting build
> and run configurations working with make:

Why qmake?

> I'm thinking to generate a set of "ProjectExplorer.Project.Target"
> structures that call 'make' to build the projects. I think I can generate
> the structure for a UE4.pro.user but that conflicts with the kit
> generation/configure step. Is there any other place where I can store this
> structure so it is available to all users?

No.

> And is this a sane approach?

No, it is user specific:-/

> I'm
> a bit worried about some of the Ids in there (e.g.
> ProjectExplorer.ProjectConfiguration.Id and EnvironmentId) will bite me once
> I got the UE4.pro.user file generated. Any ideas on that?

It will not work. That is a known problem for a while now.

My plan is to eventually have project-specific wizards that can do the
necessary magic. But those are not there yet (and I am currently
poking into other corners, so do not hold your breath).

> For reference I attached the generated .pro and .pri files which might help
> filling in the blanks where my explanation (with very limited experience
> with qmake) might fall short.

So basically you are defining custom targets for the things you
actually want to build? I am not sure that this is supported in
creator, it will definitely not be supported well.

Best Regards,
Tobias



More information about the Qt-creator mailing list