2012-11-09 33 views
9

プロジェクト全体でバージョン番号が必要です。インストーラ、コード、ツールチェーンなどで私は重複を軽蔑します。私は自分のバージョン番号を中央の権威ある場所に保存したい。Qtを含むプロジェクトのバージョン番号

私はC/C++で作業しており、さまざまなプラットフォームでQtを使用しています。 Qtのでは、qmakeはプロジェクトは次のようにバージョン番号を指定します。コードで

VERSION = 1.2.3 

を私はversion.hをのようなヘッダ内のようなものを使用します。

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

を私が使用できるように私のインストーラツールチェーンは、Cの前処理をサポートしていますVersion.hで指定されたものと同じバージョン。しかし、qmakeに同じバージョン番号を使用させる方法はわかりません。私はproファイルを前処理することができると思ったが、それは#文字では動作しません。これはproファイルのコメントを意味し、Cプリプロセッサは落ちます。

私のバージョン番号を集中管理する良い方法について知っていますか?

答えて

2

バージョン番号をcヘッダファイルに保存できるようにするには、そのバージョン番号をプロジェクトファイルのQtプロジェクト変数にインポートします。以下のような何か作業をする必要があります:

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 

この方法ラウンドそれをすることの利点は、あなたがしている場合、あなたの権威のヘッダファイルを使用することができるということですプロジェクトの他の部分をQtからコンパイルする必要があります。

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

たとえば、CコードのVERSION_MAJORを使用しますか? – oggmonster

+2

@oggmonsterアプリケーションで他のマクロを使用するのと同じ方法で、たとえば 'QString("%1%2%3 ")。arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_BUILD);' – MichK

関連する問題