본문 바로가기
MFC

MFC DLL, EXE에 버전 정보 header 파일로 분리 관리

by leo21c 2022. 4. 4.

1. 프로젝트에 존재하는 *.rc 파일을 코드 보기로 읽는다.

아래와 같은 버전 관리 리소스를 확인 할 수 있다.

 

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "041204B0"
        BEGIN
            VALUE "CompanyName", "TODO: <회사 이름>"
            VALUE "FileDescription", "TODO: <파일 설명>"
            VALUE "FileVersion", "1.0.0.1"
            VALUE "InternalName", "etArgosLock.dll"
            VALUE "LegalCopyright", "TODO: (c) <회사 이름>.  All rights reserved."
            VALUE "OriginalFilename", "etArgosLock.dll"
            VALUE "ProductName", "TODO: <제품 이름>"
            VALUE "ProductVersion", "1.0.0.1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x412, 1200
    END
END

 

2. *.rc2 파일을 코드보기로 연다.

 

//
// xxxxxxx.RC2 - Microsoft Visual C++에서 직접 편집하지 않는 리소스
//

#ifdef APSTUDIO_INVOKED
#error 이 파일은 Microsoft Visual C++에서 편집할 수 없습니다.
#endif //APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
// 여기에 수동으로 편집한 리소스를 추가합니다.

/////////////////////////////////////////////////////////////////////////////

 

위와 같이 보일 것이다.

 

 

3. rc에 있는 version 코드를 rc2로 옮긴다.

rc에는 관련 내용을 삭제하고 rc2로 옮기는 것이다.

 

#ifdef APSTUDIO_INVOKED
#error 이 파일은 Microsoft Visual C++에서 편집할 수 없습니다.
#endif //APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
// 여기에 수동으로 편집한 리소스를 추가합니다.
/////////////////////////////////////////////////////////////////////////////


#ifndef __VERSIONNO_H__
#include "..\VersionNo.h"
#endif

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 1
PRODUCTVERSION 1, 0, 0, 1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041204B0"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", "Test"
VALUE "FileVersion", STRFILEVER
VALUE "InternalName", "Test.dll"
VALUE "LegalCopyright", LEGAL_COPYRIGHT
VALUE "OriginalFilename", "Test.dll"
VALUE "ProductName", "Test"
VALUE "ProductVersion", STRPRODUCTVER
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x412, 1200
END
END

 

4. VersionNo.h를 프로젝트에 추가한다.

 

#ifndef __VERSIONNO_H__
#define __VERSIONNO_H__

#define COMPANY_NAME "TEST COMPANY"
#define LEGAL_COPYRIGHT "TEXT COMPANY/  All rights reserved."

#define FILEVER 1,0,0,1
#define PRODUCTVER 1,0,0,1
#define STRFILEVER "1.0.0.1\0"
#define STRPRODUCTVER "1.0.0.1\0"
#define COMMENTS ""
#define PRIVATEBUILD ""
#define SPECIALBUILD ""
#define SUPPORTCPU ""

#endif //__VERSIONNO_H__

 

위와 같이 생성을 하고 빌드를 한다.