Como posso passar a saída de um comando como um sinalizador do compilador por meio de um arquivo de projeto Qt?

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

  •  21-08-2019
  •  | 
  •  

Pergunta

Eu estou tentando adicionar a saída do "git descrever" o sobre a janela da minha candidatura, por isso é mais fácil de descobrir qual versão do aplicativo pessoas usam.

Eu posso fazê-lo adicionando o seguinte flag do compilador: -DAPP_VERSION = "$ (GIT descrever HEAD)"

Mas desde que o projeto é baseado em qmake, eu gostaria de encontrar uma maneira de colocar isso no arquivo de projeto Qt. Isso é possível? E se sim, como?

edit: Eu tentei adicionar o seguinte:

QMAKE_CXXFLAGS + = -DAPP_VERSION = "$ (GIT descrever HEAD)"

Mas isso só me deu "-DAPP_VERSION =", então eu acho que tem que usar alguns caracteres de escape, mas eu não sei quais e onde. : /

Foi útil?

Solução

Problema resolvido graças a este link: http: // robertcarlsen .net / blog / 2009/01/06 / qmake-xcode-bug-258

Aqui está um exemplo qt projeto que eu utilizado para testá-lo: 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();
}

Outras dicas

Você também pode usar

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

Isto irá executar o comando git apenas uma vez durante o qmake prazo que pode acelerar a compilação de grandes projectos. No entanto, você deve certificar-se de executar qmake e make clean depois de puxar a partir do repositório.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top