2009-08-19 8 views
6

Cuando construyo aplicaciones Qt en Ubuntu, coloca los archivos de salida en la carpeta principal de la solución en lugar de liberar/depurar carpetas como lo hace en Windows.Qt no crea archivos de salida en carpetas de depuración/liberación en Linux

Esto es problemático porque a veces los archivos de salida deben ejecutarse como parte del proceso de compilación (por ejemplo, para ejecutar pruebas unitarias).

Tengo una idea de que esto tiene algo que ver con los archivos qmake.conf pero no estoy seguro de qué hacer al respecto.

Así que mis preguntas son:

  1. ¿Por qué existe esta diferencia (que podría ser yo?)
  2. ¿Cómo debo ir sobre asegurándose de mis aplicaciones construirá correctamente en Windows y Ubuntu?

Respuesta

6

Supongo que está utilizando qmake para hacer el edificio real. Puede editar los archivos de proyecto para poner la salida en diferentes directorios así:

# only for unix: 
unix { 
    # in debug mode... 
    CONFIG(debug, debug|release) { 
     DESTDIR = debug 
    } 
    else { 
     DESTDIR = release 
    } 
} 

Obviamente para que esto funcione es necesario estar construyendo tanto depurar y liberar ejecutables. Más información sobre este tema se puede encontrar here

Saludos

+0

Esto funcionó para OSX también con "mac" como condición. Con OSX, la carpeta YourProgram.app se colocará directamente debajo del directorio "debug" o "release", y el ejecutable real se colocará un par de niveles más abajo, en YourProgram.app/Contents/MacOS. –

6

La variable CONFIG tiene debug_and_release y debug_and_release_target conjunto en las ventanas, pero no en Linux. Así que la siguiente línea se asegurará de que su construcción será el mismo en Linux y Windows:

CONFIG *= debug_and_release debug_and_release_target 

El documentation poco lo menciona. El archivo /usr/share/qt4/mkspecs/win32-g++/qmake.conf lo agrega a CONFIG.

+0

Voy a probar esto mañana. Espero que esto elimine las carpetas redundantes de depuración/liberación en Windows –

Cuestiones relacionadas