どのように私はQtのプロジェクトファイルを介してコンパイラフラグとしてコマンドの出力を渡すことができますか?

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

  •  21-08-2019
  •  | 
  •  

質問

私は自分のアプリケーションの程度窓に「gitの記述」の出力を追加しようとしているので、それは人々が使用するアプリケーションのバージョンを確認する方が簡単です。

私は、次のコンパイラフラグを追加することによってそれを行うことができます。 -DAPP_VERSION = "$(GitはHEADを記述)"

しかし、プロジェクトはqmakeのに基づいているので、私はQtのプロジェクトファイルにこれを入れるための方法を見つけるしたいと思います。 これは可能ですか?そしてもしそうなら、どのように?

編集: 私は、次を追加してみました。

QMAKE_CXXFLAGS + = -DAPP_VERSION = "$(GitはHEADを記述)"

しかし、それはちょうど私「-DAPP_VERSION =」を与えたので、私は、私はいくつかのエスケープ文字を使用することがあると、私はどれとどこか分かりません。 :/

役に立ちましたか?

解決

問題は、このリンクのおかげで解決:ます。http:// robertcarlsen .NET /ブログ/ 2009/01/06 / qmakeの-Xcodeの - バグ-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コマンドを実行します。ただし、リポジトリから引っ張った後qmakemake cleanを実行することを確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top