2009-11-15 4 views
0

우리가 설정 한 간단한 버전 관리 시스템을 우리가 그들이 베타 디버그 또는 베타 릴리스 내가 MyApp를 할 수있는 파일 버전 정보를 이동비주얼 스튜디오 2008 처리기 wierdness

구축 여부를 내장 파일을 항상 표시하기 위해 구축을 위해. RC2와 EXE가 파일 설명은 항상 잘못 "베타 릴리스 버전"대신에 "BETA 디버그 버전"의라는 디버그 출력 디렉토리에 내장 그러나 IDE가 "#DEFINE을 나타냅니다 그러나

// version.h 
    // _DEBUG is defined by VS 

    #define _BETA 

    #ifdef _BETA 
    #define FILE_DESC1 _T("BETA ") 
    #else 
    #define FILE_DESC1 // blank on purpose 
    #endif 

    #ifdef _DEBUG 
    #define FILE_DESC2 _T("Debug Version ") 
    #else 
    #define FILE_DESC2 _T("Release Version ") // this is greyed out in the ide when building 
    #endif 

    #define FILE_DESC FILE_DESC1 FILE_DESC2 


// myapp.rc2 
include "version.h" 

#ifndef _T 
#define _T(x) x 
#endif 

VS_VERSION_INFO VERSIONINFO 
FILEVERSION PROD_VER_MJR,PROD_VER_MIN,PROD_VER_UPD,JOBUILDER_BUILD 
PRODUCTVERSION PROD_VER_MJR,PROD_VER_MIN 
FILEFLAGSMASK 0x3fL 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904e4" 
     BEGIN 
      VALUE "CompanyName", COMPANY_NAME 
      VALUE "FileDescription", FILE_DESC 
      VALUE "FileVersion", JOBBUI_VERSION 
      VALUE "InternalName", "MyApp.exe" 
      VALUE "LegalCopyright", COPYRIGHT 
      VALUE "OriginalFilename", "MyApp.exe" 
      VALUE "ProductName", PRODUCT_NAME 
      VALUE "ProductVersion", PRODUCT_VERSION 
      VALUE "Comments", COMMENTS 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1252 
    END 
END 

version.h가 생성 FILE_DESC2 _T ("디버그 버전") "이 사용됩니다. 왜 이것이 될 수 있을까요? 나는 다른 프로젝트에서이 파일을 사용했고 제대로 작동합니다.

답변

1

는 고정 : 디버그 빌드에 나는에 _DEBUG를 추가 : -

프로젝트 속성> 리소스> 처리기 정의. 그리고 지금은 예상대로 작동합니다.

0

가장 좋은 방법은 다음과 같습니다 : "디버그"처리기 문제는 매크로 실제로 #이

을 define'd 점점 생각하는 시점에서 # 오류의 지시를 충실하는 것입니다 할 ... 감사합니다 선행 처리기가 실제로 어떤 경로를 사용했는지 알았 으면 다음과 같이 이유를 알아 내려고 시도 할 수 있습니다.

편집 : 리소스 컴파일러에 대한 실행은 컴파일러에서 실행 한 것 외에 어떤 매크로 미리 정의되어 있습니다.

+0

편집 : 정확함. 당신이 제안한대로 #error 지시문을 추가 한 다음 "치명적인 오류 RC1116 : 전처리 기 오류 후 종료되는 RC"리소스 컴파일러에서 #error (아마 알려지지 않았거나 지원되지 않음)와 원래 #define에 문제가있는 것처럼 보입니다. 이 주변의 어떤 방법으로 나는 궁금하다? sam 코드가 다른 VS2008 프로젝트에서 작업 중임을 나타냅니다. – Canacourse

관련 문제