استرداد رقم المراجعة في VS باستخدام qmake
-
20-09-2019 - |
سؤال
سير العمل الحالي الخاص بي:
hg update
(أو أي شيء يستخدمه المرء للتحقق من المراجعة)MyProject.pro
→qmake
→MyProject.vcproj
- افتح Visual Studio، قم بتحرير الملفات
- بناء المشروع
أثناء خطوة الإنشاء، كيف يمكنني تحديث ملفي config.h
ملف رأس يحتوي على معلومات من نظام التحكم في الإصدار (على سبيل المثال. hg id
)?
MyProject.vcproj
يتم إنشاؤه بواسطة qmake
, ، لذلك لا ينبغي لي تحريره يدويًا.
المحلول
يمكنك تنفيذ الأوامر الخارجية من داخل qmake.أسهل طريقة لإتاحة المعلومات في مصادرك هي استخدام تعريف:
HGID = $$system(hg id)
DEFINES += HGID=\\\"$$HGID\\\"
لست متأكدًا مما إذا كان بإمكانك تحرير ملف خارجي من qmake.يمكنك استخدام أداة خارجية، ولكن في نظام التشغيل Windows لا تتوفر عادةً أشياء مثل sed
, ، لذلك قد يكون الأمر أكثر إشكالية بعض الشيء.
نصائح أخرى
يمكنك تحقيق ذلك باستخدام هدف بناء مخصص و PRE_TARGETDEPS
الكلمة الرئيسية.على افتراض config.h.in
لديه التنسيق التالي:
#define HGID $HGID
يمكنك تحديد هدف بناء مخصص سيتم معالجته hgid.h.in
والإخراج إلى hgid.h
قبل بناء هدفك الرئيسي على النحو التالي:
hgid.target = hgid
hgid.commands = sed s/\\\$$HGID/`hg id`/ hgid.h.in > hgid.h
QMAKE_EXTRA_TARGETS += hgid
PRE_TARGETDEPS += hgid
أحد الخيارات هو تمكين ملحق الكلمة الرئيسية.ضع شيئًا كهذا في hgrc الخاص بك (أو Mercurial.ini إذا كان هذا هو الشيء الذي تفضله):
[extensions]
hgext.keyword=
[keyword]
config.h =
[keywordmaps]
HGREV = {node}
ثم في ملف config.h ضع:
#define HGREV "$HGREV$"
قد تحتاج إلى تحليل القيمة السداسية من "$HGREV:deadbeefdeadbeef $" الذي ستحصل عليه، ولكن يمكن القيام بذلك بسهولة عن طريق أي رمز يصل إلى تعريف HGREV.
بالإضافة إلى تعليق Lukáš Lalinský وgoodrone، أود أن أذكر أن qmake يمكن أن يرتبط مباشرة بالنص، وليس فقط بمخرجاته.لذلك يمكن للمرء أن يقول
DEFINES += REPO_ID=\\\"`./setlocalversion.sh`\\\"
وسيتم تنفيذ البرنامج النصي حديثًا لكل هدف.