open license gratis full descargar creator qt qt-creator qmake

gratis - qt license



qMake: ¿Cómo interpreta exactamente qmake la sintaxis "CONFIG(depurar, depurar | liberar)" (1)

Aunque leí HERE , aún no entiendo la sintaxis de la variable qmake CONFIG . por ejemplo, si tengo la siguiente configuración de CONFIGURACIÓN en mi .pro file :

CONFIG(debug, debug|release) { message("debug mode") }else { message("release mode") }

luego, al ejecutar qmake , se mostrará lo siguiente en la Salida de compilación en Qt-Creator:

Project MESSAGE: debug mode Project MESSAGE: debug mode Project MESSAGE: release mode

sabiendo que estoy construyendo mi proyecto en un "modo de depuración" , entonces mis preguntas son:

  • ¿por qué no mostrar el mensaje "modo de depuración" solamente ? y por qué no mostrarlo solo una vez?
  • Entonces, dado que estoy construyendo en un "modo de depuración", ¿por qué aparece el mensaje "Project MESSAGE: release mode" ?
  • Exactamente, ¿qué significa la sintaxis: CONFIG (debug, debug | release)? ¿significa que se construye en un modo de depuración, luego se construye en un modo de depuración y finalmente se construye en un modo de lanzamiento? Sé que estos corchetes "{}" significan un scope pero ¿cómo interpretan qmake lo que está dentro de estos corchetes "()"?

En el artículo al que se vinculó, se dice desde el principio que el archivo del proyecto se procesa tres veces. Esto debería responder su primera pregunta; ya que se procesa tres veces, su mensaje () se ejecuta tres veces también. ¿Por qué se procesa varias veces? ¡Porque qmake no construye tu proyecto! Solo genera instrucciones de compilación que luego se utilizan para construir realmente el proyecto. Para generar instrucciones de compilación para todas las configuraciones posibles, necesita procesar el archivo de proyecto varias veces, una vez para cada configuración.

Para su segunda pregunta: su proyecto está construido solo en modo de depuración si eso es lo que seleccionó, pero las instrucciones de compilación también se crean para el modo de lanzamiento, como ya se mencionó anteriormente. Al usar "make" con mingw por ejemplo (en lugar de Visual Studio), obtienes dos Makefiles: Makefile.Release y Makefile.Debug . Cuando genera el archivo make de lanzamiento, es cuando se imprime "modo de lanzamiento".

Finalmente, CONFIG(debug, debug|release) evalúa como verdadero si CONFIG contiene "depuración" pero no "versión", o si contiene "depuración" y "versión", pero "publicación" no aparece después de la última ocurrencia de "depurar". Por ejemplo, puede tener esto:

CONFIG += release debug release debug release debug

Como la última "depuración" viene después de la última "versión", CONFIG(debug, debug|release) es verdadera.

El primer argumento de CONFIG () ("depuración" en este caso) es el valor que debe aparecer al final. El segundo argumento ("debug | release") es el conjunto de valores con los que se compara el primer argumento.

Traducir eso al inglés daría algo como esto: evalúa como verdadero si aparece "debug" al menos una vez y, en caso de que también aparezca "release", la última aparición de "debug" aparece después de la última aparición de "release".