2009-12-08 2 views
4

Visual Studio 2005 (VC8)에서 Visual Studio 2008 (VC9)으로 VC++ 프로젝트를 마이그레이션하는 중입니다. 솔루션의 일부 프로젝트에는 프로젝트 설정의 '추가 라이브러리 디렉토리'필드에 타사 라이브러리에 대한 경로가 있습니다. 경로는 다음과 같이 보일 :
.. \ SomeLibrary \ lib 디렉토리 \ VC9 \ 86VC++ 컴파일러 버전에 따른 조건부 컴파일

내가 훨씬에, 컴파일러 버전을 대체하려면 Visual Studio의 "속성 페이지 매크로"중 하나를 사용할 수 있다면 정말 유용 할 것 같은 방법으로 "Debug"또는 "Release"대신 $ (ConfigurationName)을 사용할 수 있습니다. 다음과 같은 뭔가가 완벽 할 것 :
.. \ SomeLibrary 해방 \ \ $ (COMPILERVERSION) \ 86

불행하게도, 나는 적절한 매크로를 찾을 수 없습니다.

'매크로'라고 말하면 C/C++ 전 처리기 매크로가 아니라 Visual Studio의 "속성 페이지 매크로"를 참조합니다. 지금까지 알고있는 한 프로젝트 설정에서 전 처리기 지시문을 사용할 수 없습니다.

은 사람이 할 수있는 방법을 알고 있나요?

+0

해당 질문/답변은 다른 문제점입니다. 내 질문은 Visual Studio의 속성 페이지 매크로와 관련이 있습니다. – Hoppy

답변

2

당신은 속성 페이지 매크로 $를 사용할 수 있습니다 (PlatformToolsetVersion) 또는 $ (PlatformToolset) vC++ 2012의 경우 f 예를 들어, $ (PlatformToolsetVersion)은 "110"으로, $ (PlatformToolset)은 "v110"으로 해석됩니다. 따라서 "vc $ (PlatformToolsetVersion)"을 경로에 추가하면 vc11 아래에 "vc110"이 추가되거나 vc9 아래에 "vc90"이 추가됩니다.

+0

VS2005에서 사용할 수 있는지 확실하지 않지만 현재 v90/v100/v110으로 작업 중이므로 완벽합니다. 답변을 얻는 데 4 년이 걸렸습니다. :) – Hoppy

1

_MSC_VER을 사용해 보셨습니까? Microsoft의 C++ 컴파일러의 경우 컴파일러의 주 버전 번호와 부 버전 번호가 제공됩니다. 그것은 delimeter로 사용될 수 있습니다.

+0

감사합니다. 그러나 저는 Visual Studio 프로젝트 설정을 통해이 작업을 수행 할 수있는 방법을 찾고있었습니다. 내가 더 명확하게 원래 게시물을 편집했습니다. – Hoppy

7

사용 _MSC_VER :

더 복잡한 예를 들어
#ifndef _MSC_VER 
    // not VC++ 
#elif _MSC_VER < 1400 
    // older than VC++ 2005 
#elif _MSC_VER < 1500 
    // VC++ 2005 
#elif _MSC_VER < 1600 
    // VC++ 2008 
#elif _MSC_VER < 1700 
    // VC++ 2010 
#else 
    // Future versions 
#endif 

, 어떻게 부스트 VC 다루고 볼 ++ 버전 here

+0

VS2005 및 VS2008 용 프로젝트 파일의 서로 다른 (호환되지 않는) 버전에 대한 좋은 지적. –

+0

제품을 VS2008에서 빌드 할 준비가되어 있습니다. 불행히도 나머지 팀원은 VS2008로 이동할 준비가되지 않았으므로 프로젝트를 변환하여 소스 제어 시스템에 투입 할 수는 없습니다. 현재 VS2008에서 작동하도록 변경해야하는 코드의 유일한 부분은 라이브러리 경로입니다. 컴파일러 버전 용으로 사용할 수있는 속성 페이지 매크로가 있다면 깔끔할 것입니다. 그런 다음 VS2008에서 팀의 소스 코드를 다운로드하고 프로젝트를 변환하고 (수 초 만에) 개발/테스트/테스트를 수행 할 수있었습니다. – Hoppy

+0

그런 다음 어떻게 실현 해야할지 모르겠다. – KeatsPeeks