Domanda

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

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top