tutorial para interfaz grafica español ejemplos descargar creator qt build build-process qmake

para - qt tutorial español



Cómo establecer el orden de compilación en el proyecto Qt subdir (2)

Tengo un proyecto con 5-6 bibliotecas y un ejecutable. El ejecutable depende de las bibliotecas, y algunas bibliotecas dependen de otras bibliotecas. ¿Cómo puedo especificar un orden de compilación para que las dependencias se construyan antes de que se necesiten?


De acuerdo. Encontré la solución. Simplemente agregue ordenado a CONFIG y recite los subdirectores en el orden correcto

CONFIG += ordered SUBDIRS += Utility GraphicModule PackingLib Core GameProto

Para mí esto funciona bien


Aunque esta pregunta ha sido respondida y aceptada hace mucho tiempo, siento la necesidad de agregar otra respuesta; Honestamente creo que hay una mejor respuesta.

Considero CONFIG += ordered dañino y un mal hábito. Probablemente es algo que fue un poco prematuramente introducido por los desarrolladores de qmake. Y hay fuertes oponentes a su uso. Los inconvenientes son estos:

  1. no define las dependencias, simplemente nombra una orden de compilación
  2. martilla tiempos de construcción multinúcleo
  1. evita que los desarrolladores de Qt implementen características significativas

Por lo tanto, sugiero cambiar su archivo de proyecto de la siguiente manera:

TEMPLATE = subdirs SUBDIRS += Utility GraphicModule PackingLib Core GameProto GameProto.depends = Core Core.depends = PackingLib PackingLib.depends = GraphicModule GraphicModule.depends = Utility

De esta manera, las dependencias están claramente definidas. También puede pensar en otras jerarquías de dependencia más complicadas que son posibles de esta manera y absolutamente imposibles con el orden de compilación.

Actualización: (21 de junio de 2017)

Desafortunadamente, qmake no es la mejor herramienta cuando se trata de proyectos más grandes con jerarquías profundas de subproyectos. Los problemas que se ven con proyectos más grandes son estos:

  • no es posible definir dependencias para subproyectos más arriba en la jerarquía
  • Run qmake lleva mucho tiempo en ejecutarse
  • tiempo de compilación largo porque las dependencias no se manejan correctamente y se ejecutaron demasiados pasos de compilación innecesarios
  • A veces, qmake no puede calcular correctamente las dependencias de subproyectos lo que hace necesario compilar los subproyectos por separado

Existen principalmente dos formas de abordar estos problemas:

  • Reescribe tu proyecto a una jerarquía plana. Todos los ejecutables, bibliotecas estáticas y dinámicas deben estar en el nivel superior. Use dos o más niveles solo para subproyectos en los que no puede evitarlo. (por ejemplo, una biblioteca dinámica que se compone de bibliotecas estáticas) Esto dará como resultado tiempos de ejecución de qmake más cortos y tiempos de compilación más cortos. Sin embargo, incluso este enfoque puede fallar a veces.
  • Cambie a una herramienta de marca diferente, como cmake . Seriamente. Cmake es un producto maduro y el soporte de Qt Creator es comparable a qmake .

Comentario:

Debido a los conocidos problemas con qmake , la compañía Qt ya decidió introducir una nueva herramienta QBS . Sin embargo, el uso de esta herramienta no es tan simple como puede parecer en la primera impresión. No hay una transición fácil de qmake a QBS , especialmente para proyectos más complejos. La sintaxis similar al Javascript del lenguaje QBS no es fácil de comprender y la documentación escasa.

Hay en mi humilde opinión solo dos otras herramientas disponibles que son del calibre para reemplazar qmake :

  • CMake , la herramienta de construcción bien conocida.
  • meson , un sistema de compilación de código abierto pensado para ser extremadamente rápido y, lo que es más importante, lo más amigable posible.