요즘 제작 하고 있는 스터디 겸 포폴용 게임엔진도 슬슬 틀을 잡아가고 있고, 현재 캐릭터 애니메이션쪽으로 작업을 하고 있습니다. 그러던 중 같이 작업하던 해피버드 동생님하가 " 형~ 우리도 VS2010으로 작업해보자 " 해서 이왕 VS2010 지원하는거 버전별로 솔루션을 만들어보자. 해서 버전별 솔루션 지원을 해봤습니다. ( 기존에는 VS2005로 작업 중 )

Visual Studio 2010의 위엄

VS2008까지는 별문제점 없이 잘 빌드되더군요. 문제는 2010입니다. 문제중 하나가 엔진에서 XML 파서로 TinyXML을 쓰는데, 2010을 지원 못하더군요. 그래서 소스코드를 받아 2010으로 재빌드 후 Define 매크로를 통해 2010에서 빌드할때는 2010용 LIb 파일을 링크 하도록 했습니다.

/*
    1400 : Visual C++ 2005
    1500 : Visual C++ 2008
    1600 : Visual C++ 2010
*/
#if _MSC_VER > 1500
	#ifdef _DEBUG
	#pragma comment(lib, "TinyXMLStaticMDd_v10.lib")		
	#else
	#pragma comment(lib, "TinyXMLStaticMD_v10.lib")		
	#endif
#else
	#ifdef _DEBUG
	#pragma comment(lib, "TinyXMLStaticMDd.lib")		
	#else
	#pragma comment(lib, "TinyXMLStaticMD.lib")		
	#endif
#endif
그리고 생기는 또 하나의 문제!!
바로 .Net Framework 버전인데요. 이전 글에서도 써놨다 시피 제작 중인 엔진 실행 부분을 툴을 염두해두고 C#으로 제작하였습니다. 그렇기 때문에 중간에 C++과 C#을 중계해주는 공용 언어(CLR)로 제작된 코드가 있는데요. 2010 에서 대상 .Net Framework 버전을 무조건 4.0으로 잡더군요. 그래서 기존 2.0 으로 제작된 툴 부분하고 충돌이 났습니다.

그냥 4.0으로 통일하면 되잖냐~ 하겠지만, 그렇게 되면 C# 프로젝트의 셋팅 파일들이(cs) 변경되기때문에 하위 버전의 VS에서 사용할수 없게됩니다. 그래서 요로콩 조로콩 머리를 굴려봐서 변경되는 셋팅 파일들을 2010용으로 따로 하나 만들어두고 VS2010에서는 4.0 파일을 읽어들이고, 그 이하 버전에서는 기존 셋팅 파일을 불러 들이게해서 해결을 봤습니다.  대신 2010으로 툴 작업을 할때 .Net 4.0 Framework 에 추가된 기능들을 쓰면 안되겠죠.

그렇게 일단락 마무리를 하고, 2005 / 2008 / 2010 버전별 솔루션을 만들어봤습니다.

프로젝트 이름은 부끄러워서 가렸습니다.


+ Recent posts