Visual Studio 2008 에서 CppUnit 컴파일 하기

Posted at 2008. 6. 22. 12:49 // in S/W개발 // by 김윤수


우선 CppUnit 패키지를 풀고 나면, INSTALL-WIN32.txt 라는 파일이 있다.

이 설치 guide에 제시된 대로 %CPPUNIT%\examples\examples.dsw 를 더블 클릭하면 변환할 것인지를 묻고, "Yes"를 선택하면 별 문제없이 잘 변환된다. 그 상태에서 컴파일하면 기본적인 라이브러리는 잘 컴파일되는데, TestRunner 를 비롯해서 에러가 발생하는 것들이 상당히 많이 있다. 기본적인 cppunit library 외에 다른 기능들을 쓰지 않을 것이라면 에러가 발생하는 것들을 무시해도 될 듯하다. 어차피 여기까지 하더라도 cppunit.lib cppunit_dll.lib cppunit_dll.dll 이랑 cppunitd.lib cppunitd_dll.lib cppunitd_dll.dll 등 기본적인 라이브러리는 잘 빌드된다.

TestRunner 쪽 빌드할 때 문제가 발생하는 부분은

%CPPUNIT%\src\msvc6\testrunner\MsDevCallerListCtrl.cpp

의 67번째 라인으로 아무래도 Visual Studio 버전이 Upgrade 되면서 바뀐 부분이 있는데, 그게 소스에 반영되질 않아서 그런 듯하다. 오류 메시지는 다음과 같다

"\MsDevCallerListCtrl.cpp(67) : error C3505: '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}' 형식 라이브러리를 로드할 수 없습니다.
\MsDevCallerListCtrl.cpp(67) : fatal error C1104: libid를 가져오는 동안 심각한 오류가 발생했습니다. '80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2'"

이 문제를 해결하려면 다음과 같이 하면 된다(이건 제대로된 fix 라기 보다는 quick fix 이다).

67번째 라인의 version("7.0") 이라고 된 부분은 version("8.0") 이라고 바꾸면 된다. (version ("9.0") 이라고 바꿔도 된다. 2008에서는)

이걸 제대로 수정하려면 Visual Studio 8 과 Visual Studio 9의 cl.exe compiler 에서 _MSC_VER predefined macro 가 어떻게 정의됐는지 알아낸 다음에 수정하면 될 것 같긴하다. 아무래도 이거 알아내려면 또 여기 저기 뒤져야 할 것 같아서 그냥 두기로 했다.

여기까지 하면 cppunit*.* 라이브러리들 외에 testrunner*.* 라이브러리들도 생기므로 TestRunner 인터페이스도 쓸 수 있을 것 같다.

참고문헌
VC++ 7.0(VS .NET)에서 CppUnit (NUIT아님) 쓰고 싶은 사람 나만 따라 해바바바바~ : VS 7.0 에서 컴파일하는 내용이지만 그 이후 버전에서도 개념의 거의 비슷하므로 따라하면 도움이 된다.
VS 7에서 CPP Unit 사용하기 : 위 글보다 약간 더 자세해서 이해하기 쉽다. 위 분은 모든 프로젝트에서 공통적으로 설정하는 방법을 몰라 헤맸는데, 이 분은 그걸 정확히 설명해 놓으셨다.
CPPUnit 을 사용하기 위한 단계별 작업 : 덧붙여 Test Case 를 작성하는 샘플과 프로젝트 세팅해야할 항목을 설명해 놓으셨다. 그런데 프로젝트 라이브러리 세팅하는 것은 첫글을 보는 게 나을 듯하다.
CppUnit : 세부적으로 나와 있진 않지만 위 세글을 모두 합쳐놓은 듯한 글이다. Reference 로 삼으면 좋을 듯하다. 이 글에서는 %CPPUNIT%\examples\examples.dsw 보다는 %CPPUNIT%\src\CppUnitLibraries.dsw 으로 컴파일하라고 나와 있는데, 이글에 나와있는 대로 따라하는 게 시간 절약하는 방법일 것 같다.

제 글이 유익하셨다면 오른쪽 버튼을 눌러 제 블로그를 구독하세요. ->
블로그를 구독하는 방법을 잘 모르시는 분은 2. RSS 활용을 클릭하세요.
RSS에 대해 잘 모르시는 분은 1. RSS란 무엇인가를 클릭하세요.