2013-01-09 22 views
5

ビルドスクリプトの一部として、デルファイプロジェクトのバージョンを別のプロジェクト(デルファイではない)と同じにする必要があります。 IDE経由でバージョン番号を制御する方法はありますか?例えば、コンパイラのコマンドラインパラメータやそのようなものですか?おかげビルド時にバージョン番号を変更する

+1

これは、IDEがバージョンリソースを制御するのをやめて、ビルド前のアクションとして独自のバージョンリソース生成をスクリプト化することをお勧めします。 –

+0

@davidこれを行う方法はありますか? –

+2

FinalBuilderのようなものを見て、EXEのすべてを同じビルド番号に設定し、一貫性のあるビルドパラメータなどを保証することができます。 – mj2008

答えて

12

は、プロジェクト内の

{$R 'version.res'} 

のような行を含めます。バージョン情報を含むversion.rcファイルを作成します。 brcc32を使用して古いDelphiのバージョンで自分でリソースを構築する必要があります。新しいデルファイのバージョンでは、

{$R 'version.res' 'version.rc'} 

を使用して、自動的にビルドすることができます。詳細については、​​3210構造上のMSDNを参照してください

1 VERSIONINFO 
FILEVERSION 9999, 9999, 99, 18048 
PRODUCTVERSION 9999, 9999, 99, 18048 
FILEOS 0x00000004L // comment: VOS_WINDOWS32 
FILETYPE VFT_APP 
{ 
BLOCK "VarFileInfo" 
{ 
    VALUE "Translation", 0x409, 0x4E4 // comment: 0x4E4 = 1252 
} 

BLOCK "StringFileInfo" 
{ 
    BLOCK "040904E4" 
    { 
    VALUE "CompanyName", "Company Name\0" 
    VALUE "FileVersion", "9999.9999.99.18048\0" 
    VALUE "LegalCopyright", "Copyright \0" 
    VALUE "ProductName", "Product Name\0" 
    VALUE "ProductVersion", "9999.9999.99.18048\0" 
    VALUE "Homepage", "http://www.mydomain.com\0" 
    } 
} 
} 

最も簡単なversion.rcは次のようになります。

+0

+1私が使用している解決策としてこれを行うが、version.resを削除しないと、version.rcへの変更はリンカによって通知されないことが保証されている必要があります。 –

+0

@BrianFrost:どのバージョンのDelphiを使用していますか?私はそのような問題を抱えていません。そして、あなたはプロジェクトオプションの "バージョン情報を含める"をオフにしましたか? –

+0

私の間違い。 * .rcで#includeを使用してvernionに番号を付けると、* .resを削除する必要があるので、実際のバージョン番号だけの*インクルードファイルのみを* .rcに変更していませんでした。 –

1

Marjanは優れた答えを示していますが、私の答えはもう少し答えが必要です。いくつかの#include文を使用しての利点は、あなただけではRCファイルを残し、その後、単純に修正する(あるいは自動生成する)ことができるということです

VS_VERSION_INFO VERSIONINFO 

#include "..\Ver_Num_Application.txt" 
#define APPLICATION_NAME "My amazing project\0" 
#define VER_NUM_ARTWORKS 4 
#include "..\Libraries\Paslib32\Ver_Num_Library.txt" 
#define COMPANY_NAME  "My company\0" 

FILEVERSION VER_NUM_ARTWORKS, VER_NUM_LIBRARY, VER_NUM_APPLICATION, 1000 
FILEFLAGSMASK 0x3fL 
#ifdef _DEBUG 
FILEFLAGS 0x9L 
#else 
FILEFLAGS 0x8L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "CompanyName", COMPANY_NAME 
      VALUE "FileDescription", APPLICATION_NAME 
      VALUE "LegalCopyright", "Copyright (C) "COMPANY_NAME 
      VALUE "ProductName", APPLICATION_NAME 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 

* .txtのように見えるファイルが含まれます。このRCファイルを考えてみましょう:

Ver_Num_Application.txt: 
    #define VER_NUM_APPLICATION 6 

Ver_Num_Library.txt: 
    #define VER_NUM_LIBRARY 156 

今あなたが(おそらく変更された)バージョン番号からそれらを再生成するために、リンカを強制的にビルドを実行する前に、* .RESファイルを削除する必要があります注意してください。

+0

{$ R ...}条件付き定義を使用して、dpr内の異なるversion.res/rcペアを簡単に作成できますか?それは他の情報が頻繁に変更されるようではない... –

+0

{0}真実。私はすべてのプロジェクト用の「標準の」RCファイルと、メモ帳で開かれた拡張子が* .txtのファイルを欲しかったと思います。 –

+1

ブライアン、私が理解できる "標準"ファイル、しかしtxtファイル? .RCファイルをデフォルトのエディタとしてメモ帳に関連付ける方法を知っていると思いますか? ;-) –

関連する問題