问题
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
回答1:
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.
来源:https://stackoverflow.com/questions/11616647/qtcreator-avoid-redefining-libs-in-qt-subdirs-project