2

我正在尝试将“git describe”的输出添加到我的应用程序的 about 窗口中,这样更容易找出人们使用的应用程序版本。

我可以通过添加以下编译器标志来做到这一点: -DAPP_VERSION="$(git describe HEAD)"

但是由于该项目是基于qmake的,所以我想找到一种方法将其放入Qt项目文件中。这可能吗?如果是这样,怎么办?

编辑:我尝试添加以下内容:

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

但它只是给了我“-DAPP_VERSION=”,所以我想我必须使用一些转义字符,但我不知道哪些以及在哪里。:/

4

2 回答 2

5

通过此链接解决了问题: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();
}
于 2009-05-12T12:51:59.990 回答
1

你也可以使用

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

这将在 qmake 运行期间只执行一次 git 命令,这可能会加快大型项目的编译速度。但是,您必须确保在从存储库qmakemake clean提取后运行。

于 2014-12-17T11:26:55.433 回答