3

我有一个代码库,其中有一些共享库。例如,LIB1 执行 APP1 需要(取决于)的某种处理。

qmake *.pro 文件的设置如下。有一个根 *.proTEMPLATE=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.

我使用了一个 hack,但我想克服这个 hack。hack 包括在 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依赖关系。)

4

1 回答 1

2

qmake allows you to create your own configuration features. (last paragraph)

So you can create your own feature and move your lib1-linking code to it. You can add QT+=xml here. And in app.pro you'll just write CONFIG += lib1

于 2012-09-19T16:59:40.063 回答