QT 프로젝트 파일을 통해 컴파일러 플래그로 명령의 출력을 어떻게 전달할 수 있습니까?

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

  •  21-08-2019
  •  | 
  •  

문제

"git spection"의 출력을 응용 프로그램의 정보 창에 추가하려고하므로 사람들이 사용하는 응용 프로그램의 버전을 쉽게 찾을 수 있습니다.

다음 컴파일러 플래그를 추가하여 할 수 있습니다 : -dapp_version = "$ (git spection head)" "

그러나 프로젝트는 QMake를 기반으로하기 때문에 QT 프로젝트 파일에이를 넣을 방법을 찾고 싶습니다. 이게 가능해? 그렇다면 어떻게?

편집 : 다음을 추가하려고 시도했습니다.

qmake_cxxflags += -dapp_version = "$ (git expect head)" "

그러나 그것은 단지 "-dapp_version ="를 주었다. 그래서 나는 탈출 문자를 사용해야한다고 생각하지만 어느 것이 어디에서 어디에 있는지 모른다. :/

도움이 되었습니까?

해결책

이 링크 덕분에 문제가 해결되었습니다. http://robertcarlsen.net/blog/2009/01/06/qmake-xcode-bug-258

다음은 테스트하는 데 사용한 샘플 QT 프로젝트입니다. 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();
}

다른 팁

당신은 또한 사용할 수 있습니다

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

QMake 실행 중에 GIT 명령을 한 번만 실행하여 대규모 프로젝트의 편집 속도를 높일 수 있습니다. 그러나 실행해야합니다 qmake 그리고 make clean 저장소에서 당기면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top