У меня есть кодовая база, где есть несколько общих библиотек. Например, LIB1 выполняет некоторую обработку, которая необходима APP1 (зависит от).
Файлы qmake * .pro настраиваются следующим образом. Существует один корень * .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
зависимость.)
qmake позволяет создавать ваши собственные особенности конфигурации. (последний абзац)
Таким образом, вы можете создать свою собственную функцию и перенести в нее свой код, связанный с lib1. Можете добавить QT+=xml
Вот. И в app.pro
ты просто напишешь CONFIG += lib1
Других решений пока нет …