2012-11-09 18 views
9

के साथ एक परियोजना में संस्करण संख्या सभी परियोजनाओं पर संस्करण संख्या की आवश्यकता है; इंस्टॉलर, कोड, टूलचेन्स इत्यादि में मैं नकल को तुच्छ जानता हूं। मैं चाहता हूं कि मेरी संस्करण संख्या एक केंद्रीय आधिकारिक स्थान पर संग्रहीत की जाए।क्यूटी

मैं सी/सी ++ के साथ काम कर रहा हूं और विभिन्न प्लेटफार्मों पर क्यूटी का उपयोग कर रहा हूं।

#define VERSION_MAJ 1 
#define VERSION_MIN 2 
#define VERSION_REV 3 
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\" 

मेरे संस्थापक toolchain सी पूर्व प्रसंस्करण के लिए समर्थन तो मैं उपयोग कर सकते हैं किया है:

VERSION = 1.2.3 

कोड में मैं Version.h की तरह एक शीर्षक में की तरह कुछ का उपयोग करें: क्यूटी में, जैसे qmake परियोजनाओं संस्करण संख्याओं को निर्दिष्ट संस्करण एच में निर्दिष्ट वही संस्करण। हालांकि, मुझे नहीं पता कि qmake को समान संस्करण संख्या का उपयोग करने के लिए कैसे प्राप्त करें। मैंने सोचा कि मैं समर्थक फ़ाइल को प्रीप्रोसेस कर सकता हूं, लेकिन यह काम नहीं करेगा क्योंकि # अक्षरों का अर्थ प्रो फाइलों में एक टिप्पणी है और सी प्रीप्रोसेसर खत्म हो जाएगा।

कोई भी मेरे संस्करण संख्या को केंद्रीकृत रखने के लिए एक अच्छा तरीका जानता है?

उत्तर

2

यदि आप अपने संस्करण संख्या को सी हेडर फ़ाइल में स्टोर करने में सक्षम होना चाहते हैं, तो आप ऐसा कर सकते हैं और फिर उन्हें प्रोजेक्ट फ़ाइल में क्यूटी प्रोजेक्ट चर में आयात कर सकते हैं। नीचे की तरह कुछ काम करना चाहिए:

Version.h:

#define MY_MAJOR_VERSION 3 
#define MY_MINOR_VERSION 1 

.pro

HEADERS += Version.h 

VERSION_MAJOR = MY_MAJOR_VERSION 
VERSION_MINOR = MY_MINOR_VERSION 

इस तरह दौर यह कर का लाभ आप तो अगर आपके आधिकारिक हेडर फाइल का उपयोग कर सकते हैं आपको प्रोजेक्ट के अन्य हिस्सों को क्यूटी से दूर करने की आवश्यकता है।

19

मैं अपने निर्माण प्रणाली

#.pro file 
#Application version 
VERSION_MAJOR = 1 
VERSION_MINOR = 0 
VERSION_BUILD = 0 

DEFINES += "VERSION_MAJOR=$$VERSION_MAJOR"\ 
     "VERSION_MINOR=$$VERSION_MINOR"\ 
     "VERSION_BUILD=$$VERSION_BUILD" 

#Target version 
VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD} 

में कुछ इस तरह का उपयोग करें और उसके बाद आप अपने आवेदन में सामान्य मैक्रो के रूप में VERSION_MAJOR और दूसरों का उपयोग कर सकते हैं।

+1

उदाहरण के लिए, मैं अपने सी कोड से VERSION_MAJOR का उपयोग कैसे करूं? – oggmonster

+2

@oggmonster वैसे ही जैसे आप अपने अनुप्रयोग में अन्य मैक्रोज़ का उपयोग करते हैं, उदाहरण के लिए 'क्यूस्ट्रिंग ("% 1.% 2.% 3")। Arg (VERSION_MAJOR) .arg (VERSION_MINOR) .arg (VERSION_BUILD); ' – MichK