2012-09-19 33 views
3

我有一个代码库,其中有一些共享库。例如,LIB1会执行APP1需要的某些处理(取决于)。你如何告诉Qt应用程序依赖于Qt库?

qmake * .pro文件设置如下。有一个root * .pro是TEMPLATE=subdirs,它列出APP1和LIB1作为其子节点。

LIB1.pro:

TARGET = LIB1 
TEMPLATE = lib 

QT += core 
QT += xml 

DESTDIR = path/to/libs/directory 

SOURCES += \ 
    File1.cpp \ 
    FileN.cpp 

HEADERS += \ 
    File1.h \ 
    FileN.h 

APP1.pro:

#------ dependencies ------# 
LIBS += -Lpath/to/libs/directory 
# LIB1 
INCLUDEPATH += path/to/libs/directory/LIB1lib 
DEPENDPATH += path/to/libs/directory/LIB1lib 
LIBS += -lLIB1 

HEADERS  = \ 
    FileNplus1.h \ 
    FileM.h 
SOURCES  = \ 
    FileNplus1.cpp \ 
    FileM.cpp 

的问题是,当你编译根* .pro文件LIB1将编译,但APP1失败,出现错误编译QDomElement: No such file or directory,因为APP1.pro没有QT += xml

有一个黑客,我用,但我想克服这个黑客。黑客涉及添加以下行APP1.pro:

# add this to APP1.pro... let's it compile again 
QT += xml 

反正有没有设置你的QMAKE *这样的.pro文件,APP1.pro取决于LIB1,而无需修改APP1.pro添加QT += xml

(之所以这个问题,让我们说你有依赖于其他的东西其他图书馆...我想有QT/QMAKE采取像例如Qt += xml依赖依赖的服务。)

回答

2

qmake允许您创建您的own configuration features。 (最后一段)

因此,您可以创建自己的功能并将lib1链接代码移动到它。您可以在这里添加QT+=xml。并在app.pro你只需写CONFIG += lib1

+1

有趣!我会检查出来的。 –