كيف يمكنني تمرير إخراج الأمر كما علم المترجم من خلال ملف مشروع كيو تي؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

وأنا أحاول أن أضيف إخراج "بوابة وصف" إلى حوالي نافذة طلبي، لذلك فإنه من السهل معرفة ما هو إصدار تطبيق استخدام الناس.

ويمكنني القيام بذلك عن طريق إضافة علامة مترجم التالية: -DAPP_VERSION = "$ (بوابة تصف الرأس)"

ولكن منذ ويستند المشروع على كماكي، وأود أن تجد وسيلة لوضع هذا في ملف مشروع كيو تي. هل هذا ممكن؟ وإذا كان الأمر كذلك، كيف؟

وتحرير: حاولت إضافة ما يلي:

وQMAKE_CXXFLAGS + = -DAPP_VERSION = "$ (بوابة تصف الرأس)"

ولكن أنه أعطاني فقط "-DAPP_VERSION ="، لذلك أعتقد أنني يجب أن استخدام بعض الأحرف الهروب، ولكن أنا لا أعرف أي منها وفيها. : /

هل كانت مفيدة؟

المحلول

ومشكلة حلها بفضل هذا الرابط: HTTP: // robertcarlsen صافي / بلوق / 2009/01/06 / كماكي-كسكودي من الشوائب-258

وفيما يلي مشروع كيو تي عينة I استخدامها لاختبار ما يلي: 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 وmake clean بعد سحب من المخزون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top