[qt] Cómo especificar diferentes directorios de salida Debug / Release en el archivo QMake .pro


Answers

Para cambiar el directorio de destino dll / exe, use esto en su archivo pro:

CONFIG(debug, debug|release) {
    DESTDIR = build/debug
} else {
    DESTDIR = build/release
}

También es posible que desee cambiar directorios para otros objetivos de compilación como archivos de objeto y archivos moc (consulte la referencia de la variable qmake para obtener más información o la referencia de función de qmake CONFIG () ).

Question

Tengo un proyecto Qt y me gustaría generar archivos de compilación fuera del árbol de fuentes.

Actualmente tengo la siguiente estructura de directorio:

/
|_/build
|_/mylib
  |_/include
  |_/src
  |_/resources

Dependiendo de la configuración (depuración / versión), me gustaría dar salida a los archivos resultantes dentro del directorio de compilación en los directorios build / debug o build / release.

¿Cómo puedo hacer eso usando un archivo .pro?




La nueva versión de Qt Creator también tiene una opción de compilación de "perfil" entre la depuración y la versión. Así es como estoy detectando eso:

CONFIG(debug, debug|release) {  DEFINES += DEBUG_MODE }
else:CONFIG(force_debug_info) { DEFINES += PROFILE_MODE }
else {                          DEFINES += RELEASE_MODE }



Uso el mismo método sugerido por chalup,

ParentDirectory = <your directory>

RCC_DIR = "$$ParentDirectory\Build\RCCFiles"
UI_DIR = "$$ParentDirectory\Build\UICFiles"
MOC_DIR = "$$ParentDirectory\Build\MOCFiles"
OBJECTS_DIR = "$$ParentDirectory\Build\ObjFiles"

CONFIG(debug, debug|release) { 
    DESTDIR = "$$ParentDirectory\debug"
}
CONFIG(release, debug|release) { 
    DESTDIR = "$$ParentDirectory\release"
}



Pregunta anterior, pero aún merece una respuesta actualizada. Hoy es común hacer lo que hace Qt Creator cuando se usan compilaciones de sombreados (están habilitadas por defecto al abrir un nuevo proyecto).

Para cada destino y tipo de compilación diferente, el qmake correcto se ejecuta con los argumentos correctos en un directorio de compilación diferente. Entonces eso solo se construye con una make simple.

Entonces, la estructura de directorios imaginarios podría verse así.

/
|_/build-mylib-qt5-mingw32-debug
|_/build-mylib-qt5-mingw32-release
|_/build-mylib-qt4-msvc2010-debug
|_/build-mylib-qt4-msvc2010-release
|_/build-mylib-qt5-arm-debug
|_/build-mylib-qt5-arm-release
|_/mylib
  |_/include
  |_/src
  |_/resources

Y lo más importante es que un qmake se ejecuta en el directorio de compilación:

cd build-mylib-XXXX
/path/to/right/qmake ../mylib/mylib.pro CONFIG+=buildtype ...

Luego genera makefiles en el directorio de construcción, y luego make generará archivos debajo de él también. No hay riesgo de que se mezclen versiones diferentes, siempre y cuando qmake nunca se ejecute en el directorio de origen (si es así, mejor ¡límpielo bien!).

Y cuando se hace así, el archivo .pro de la respuesta actualmente aceptada es aún más simple:

HEADERS += src/dialogs.h
SOURCES += src/main.cpp \
           src/dialogs.cpp





Links



Tags

qt qt   qmake