15

プロジェクト全体でバージョン番号が必要です。インストーラー、コード、ツールチェーンなどで。私は複製を軽蔑します。バージョン番号を1つの中央の信頼できる場所に保存したい。

私は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で同じバージョン番号を使用する方法がわかりません。プロファイルを前処理できると思いましたが、#文字はプロファイルのコメントを意味し、Cプリプロセッサがフォールオーバーするため、機能しません。

私のバージョン番号を一元化するための良い方法を知っている人はいますか?

4

2 に答える 2

26

ビルドシステムでこのようなものを使用しています

#.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などを通常のマクロとして使用できます。

于 2012-11-09T23:09:33.243 に答える
4

バージョン番号をacヘッダーファイルに保存できるようにする場合は、保存してから、プロジェクトファイルのQtプロジェクト変数にインポートできます。以下のようなものが機能するはずです:

Version.h:

#define MY_MAJOR_VERSION 3
#define MY_MINOR_VERSION 1

。プロ

HEADERS  += Version.h

VERSION_MAJOR = MY_MAJOR_VERSION
VERSION_MINOR = MY_MINOR_VERSION

この方法で行うことの利点は、プロジェクトの他の部分をQtから離れてコンパイルする必要がある場合に、信頼できるヘッダーファイルを使用できることです。

于 2012-11-12T09:57:08.843 に答える