Pregunta

Tener un archivo que contiene SomeLib.pro:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

A continuación, en un SomeApp.pro dependiente:

..
debug:LIBS += -lSomeLib_debug
..

¿Cómo puedo forzar SomeApp para construir si tocaba SomeLib en qmake?

¿Fue útil?

Solución

Es feo porque es necesario para dar el nombre de archivo de la biblioteca exacta, pero esto debería funcionar:

TARGETDEPS + = libfoo.a

Otros consejos

Qt Creator hará el trabajo si hace clic en "Agregar biblioteca ..." en el menú de contexto del proyecto que debe incluir la biblioteca.

Estas variables se configuran automáticamente para usted:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

http: //doc.qt. digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

En respuesta al comentario de Zahir, que es tal vez vale la pena señalar que la mención esta dependencia en archivos QMake no es necesaria si se utiliza DLL, pero es esencial si su exe depende de una biblioteca estática.

qmake no proporciona esta capacidad.

En su lugar, puso su aplicación y lib en subdirectorios, a continuación, crear un Makefile en su directorio principal que se ve algo como esto:

all: FRC
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE)

FRC:

A continuación, siempre se ejecutan make desde este directorio.

He utilizado:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a

Funciona, pero es torpe ya que es necesario especificar la ruta completa a la biblioteca, que es diferente para cada sistema / compilador operativo.

seguramente eso no puede ser posible, se está hablando acerca del uso de qmake para realizar una búsqueda inversa de dependencia? así que lo que quieres es para que se acumule aplicación B (y cualquier otra aplicación depende de la biblioteca A) después de haber hecho un cambio a la biblioteca de A?

que es un poco como decir volver a compilar todas las aplicaciones de Visual Basic si se actualiza vbrun300.dll?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top