[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