QT 프로젝트 파일을 통해 컴파일러 플래그로 명령의 출력을 어떻게 전달할 수 있습니까?
-
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
저장소에서 당기면.
제휴하지 않습니다 StackOverflow