¿Cómo puedo pasar la salida de un comando como indicador del compilador a través de un archivo de proyecto Qt?

StackOverflow https://stackoverflow.com/questions/852437

  •  21-08-2019
  •  | 
  •  

Pregunta

Estoy intentando agregar la salida de "git describe" a la ventana Acerca de de mi aplicación, para que sea más fácil saber qué versión de la aplicación usa la gente.

Puedo hacerlo agregando el siguiente indicador del compilador:-DAPP_VERSION="$(git describe HEAD)"

Pero como el proyecto se basa en qmake, me gustaría encontrar una manera de colocarlo en el archivo del proyecto Qt.es posible?Y si es así, ¿cómo?

editar:Intenté agregar lo siguiente:

QMAKE_CXXFLAGS += -DAPP_VERSION="$(git describe HEAD)"

Pero solo me dio "-DAPP_VERSION=", así que supongo que tengo que usar algunos caracteres de escape, pero no sé cuáles ni dónde.:/

¿Fue útil?

Solución

problema resuelto gracias a este enlace: http: // robertcarlsen .net / blog / 2009/01/06 / qmake-Xcode-bug-258

Aquí hay un proyecto qt muestra utilicé para probarlo: qt.pro:

######################################################################
# Automatically generated by qmake (2.01a) Thu Apr 2 16:23:05 2009
######################################################################

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
SOURCES += qt.cpp

QMAKE_CXXFLAGS += -DAPP_DATE=\\\"`date +'\"%a_%b_%d,_%Y\"'`\\\"
QMAKE_CXXFLAGS += -DAPP_VERSION=\\\"`git describe`\\\"

qt.cpp:

#ifndef APP_DATE
#define APP_DATE "1/1/1970"
#endif

#ifndef APP_VERSION
#define APP_VERSION "local-dev"
#endif

#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QString version = QString("version ") + APP_VERSION + ' ' + APP_DATE;
    QLabel *label = new QLabel(version);
    label->show();
    return app.exec();
}

Otros consejos

También puedes usar

QMAKE_CXXFLAGS += -DAPP_VERSION=\\\"$$system(git describe HEAD)\\\"

Esto ejecutará el comando git solo una vez durante la ejecución de qmake, lo que podría acelerar la compilación para proyectos grandes.Sin embargo, debes asegurarte de ejecutar qmake y make clean después de sacarlo del repositorio.

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