Como um especificar uma dependência de arquivo biblioteca para qmake em Qt?
-
13-09-2019 - |
Pergunta
Tenha um arquivo SomeLib.pro que contém:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
Então, em uma SomeApp.pro dependente:
..
debug:LIBS += -lSomeLib_debug
..
Como posso forçar SomeApp para construir se eu tocasse SomeLib em qmake?
Solução
É feio, porque você precisa dar o nome do arquivo de biblioteca exata, mas isso deve funcionar:
TARGETDEPS + = libfoo.a
Outras dicas
QT Creator irá fazer o trabalho, se você clicar em "Adicionar biblioteca ..." no menu de contexto do projeto que deve incluir a biblioteca.
Essas variáveis ??são configurados automaticamente para você:
- LIBS
- IncludePath
- DEPENDPATH
- PRE_TARGETDEPS
Veja também http: //doc.qt. digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
Em resposta ao comentário de Zahir, talvez seja importante ressaltar que declarar essa dependência em arquivos qmake é desnecessário se usar DLLs, mas é essencial se o seu exe depende de uma biblioteca estática.
qmake
não fornece essa capacidade.
Em vez disso, coloque o seu aplicativo e lib nos subdiretórios, em seguida, criar um Makefile em seu diretório pai que é algo como isto:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
Em seguida, sempre correr make
a partir deste diretório.
eu usei:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
Ele funciona, mas é desajeitado, uma vez que é necessário especificar o caminho completo para a biblioteca, que é diferente para cada sistema operacional / compilador.
certamente que não pode ser possível, você está falando sobre o uso qmake para fazer uma pesquisa de dependência inversa? então o que u quero é que ele para construir aplicativo B (e qualquer outro aplicativo dependente de biblioteca A) depois de ter feito uma mudança para a biblioteca A?
que é um pouco como dizer que recompilar todas as aplicações básicas visuais se vbrun300.dll é atualizado?