Question

I have a Qt subdirs project with the following structure:

ExternalQtProject 
QtSubdirProjects
  - GUI
  - WebService

WebService contains LIBS from the external Qt project (.pro file in WebService)

LIBS += -L<path to ExternalQtProject>
LIBS += <some ExternalQtProject .obj files>

GUI uses the web service (.pro file in GUI):

LIBS += -L<path to WebService>
LIBS += <WebService .obj files>

So basically GUI is using one header file from WebService, which in turn uses several header files from ExternalQtProject.

Problem: I get linker issues until I include the LIBS entries from WebService as well in GUI, so GUI ends up with all LIBS from the ExternalQtProject:

LIBS += -L<path to ExternalQtProject> # I want to avoid redefinition of this
LIBS += <some ExternalQtProject .obj files>  # I want to avoid redefinition of this
LIBS += -L<path to WebService>
LIBS += <WebService .obj files>

Since there is a clear dependency (GUI->WebService->ExternalQtProject), is there a way to avoid this redefinition of LIBS for the GUI sub project?

-- Edit 1 --

How to use QMake's subdirs template? helps me to better structure my project, but not yet avoiding the duplication of LIBS

Was it helpful?

Solution

Qmake .pro files can use variables and include other files.

You can e.g. use SOMELIST=foo.obj bar.obj and LIBS += $$SOMELIST when needed.

A SUBDIRS template is used to list different .pro files, each typically responsible for building one binary or one library.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top