오늘은 googletest라는 녀석을 사용해보록 해보죠...

먼저.....다음 웹페이지를 들어가봅시다.


https://code.google.com/p/googletest/ <-- 이곳에 들어가보니 github페이지로 가보란다.;;;;


아니 이런… github에있다는 것이다……...

https://github.com/google/googletest/tree/master/googletest

어디에서 다운로드를 받을 수 있단 말인가?



일단 닥치고..(?^^^) 헤더랑 lib만 있으면 된다…

그런데 어디에서 받을 수 있는지….


아니 이런…


일단

https://github.com/google/googletest/tree/master/googletest 에 들어가서..저 밑 화살표를 다운받아보자….



음….



뭐지?

CMake가 있어야 하는가 보다…

에라 모르겠다...

할렐루야~

하자…

설치~~!!



CMake 의 홈페이지이다….

하단부에 보니..다운 받을 수 있는 곳이 있구만…

홈페이지 하단에 있는 버튼이다….


받자..받자…~~!!


음……..설치를 한다…

음…

이것은 CMake 아이톤이다. 삼각형이네..음...음….태극문향과 비슷하기도 하고…

무슨사상이 들어갔을까?

이상한 종교의 사상이 들어가지 않았겠쥐??

음…….설치하고 바탕화면의 것을 실행했더니...저런 놈이 나타난다….

소스파일이 어디있냐고?

빌드는 어디에 저장하냐고?

Grouped

Advanced

음…..

음….

음…

음….

일단 CMake설치했으니께…..


음….

다시 실행시켜보자…

https://github.com/google/googletest/tree/master/googletest



Using CMake

Google Test comes with a CMake build script ( CMakeLists.txt) that can be used on a wide range of platforms ("C" stands for cross-platform.). If you don't have CMake installed already, you can download it for free from http://www.cmake.org/.

CMake works by generating native makefiles or build projects that can be used in the compiler environment of your choice. The typical workflow starts with:

mkdir mybuild       # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR}  # Generate native build scripts.

If you want to build Google Test's samples, you should replace the last command with

cmake -Dgtest_build_samples=ON ${GTEST_DIR}

If you are on a *nix system, you should now see a Makefile in the current directory. Just type 'make' to build gtest.

If you use Windows and have Visual Studio installed, a gtest.sln file and several .vcproj files will be created. You can then build them using Visual Studio.

On Mac OS X with Xcode installed, a .xcodeproj file will be generated.




음…

cmake

을………………………………...실행할 수 있다.


음…


mkdir mybuild       # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR}  # Generate native build scripts.

오~~된다~~!!!


build가 되는 거 겠쥐~~!!!


Visual Studio 14 2015로 빌드한단다~~!!


컴파일러 찾았다!!라고 말한다.

ABI info 는 뭐냐?


PythonInterp...음…….파이션이 있어야 하는가?

음….

Build files have been written to

라고………...쓰여있네…

가보자…

음…

d:/mybuild~~로 가보자..


음…

.sln .vcxproj 파일 들이 생겼네…

이제 이 파일로 빌드를 하면 되는건가?(빌드가 만들어진게 아니고...빌드 파일이 만들어졌나보네…)



음…. 저 CMakeLists.txt 파일이 있어야 .sln .vcxproj 파일이 생성되는 구나~~!

음……………...


자 빌드해보겠습니다….

어여…..해보장~~!!!!!



음…

ALL_BUILD라는 녀석이 있네…

이놈을 빌드하자…~~!!


자 빌드 드려 ~~빌드~~!!!!


성공은 2개….

실패는 2개….

성공은 뭐고 실패는 뭐지????


음…...이런……………..실패 2개는 뭐지???



2>D:\googletest-master\googletest\include\gtest/internal/gtest-internal.h : error C2220: 경고가 오류로 처리되어 생성된 'object' 파일이 없습니다.

object 파일이 없다고???

뭐지???

경고가 오류로 처리되어 생성된 ‘object’파일이 없습니다.


2>D:\googletest-master\googletest\include\gtest/internal/gtest-internal.h : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.


음………표시할수 없는 문자가 있다고?

뭐냐????


음….


음...어떻게 하지?????

이런…


컴파일러 수준을 바꿔야겠다…


아니다. 구글링하자…(누군가 시행착오를 거쳤겠쥐….)


저기 저 옵션을 껴보자…..

‘아니요’로 말이다…. /WX-




1>------ 빌드 시작: 프로젝트: gtest, 구성: Debug Win32 ------

1>  gtest-all.cc

1>D:\googletest-master\googletest\include\gtest/internal/gtest-internal.h : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

1>  gtest.vcxproj -> D:\mybuild\Debug\gtest.lib

========== 빌드: 성공 1, 실패 0, 최신 1, 생략 0 ==========


드디어 성공!!!!


흐…..

저 경고 warning은 그냥 무시하자……

음…


나머지 프로젝트 gtest_main도 …………….’경고를 오류로 처리’ 를 ‘아니요’로 하자…



1>------ 모두 다시 빌드 시작: 프로젝트: ZERO_CHECK, 구성: Debug Win32 ------

1>  Checking Build System

1>  CMake does not need to re-run because D:/mybuild/CMakeFiles/generate.stamp is up-to-date.

2>------ 모두 다시 빌드 시작: 프로젝트: gtest, 구성: Debug Win32 ------

2>  Building Custom Rule D:/googletest-master/googletest/CMakeLists.txt

2>  CMake does not need to re-run because D:\mybuild\CMakeFiles\generate.stamp is up-to-date.

2>  gtest-all.cc

2>D:\googletest-master\googletest\include\gtest/internal/gtest-internal.h : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

2>  gtest.vcxproj -> D:\mybuild\Debug\gtest.lib

3>------ 모두 다시 빌드 시작: 프로젝트: gtest_main, 구성: Debug Win32 ------

3>  Building Custom Rule D:/googletest-master/googletest/CMakeLists.txt

3>  CMake does not need to re-run because D:\mybuild\CMakeFiles\generate.stamp is up-to-date.

3>  gtest_main.cc

3>D:\googletest-master\googletest\include\gtest/internal/gtest-internal.h : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

3>  gtest_main.vcxproj -> D:\mybuild\Debug\gtest_main.lib

4>------ 모두 다시 빌드 시작: 프로젝트: ALL_BUILD, 구성: Debug Win32 ------

4>  Building Custom Rule D:/googletest-master/googletest/CMakeLists.txt

4>  CMake does not need to re-run because D:\mybuild\CMakeFiles\generate.stamp is up-to-date.

========== 모두 다시 빌드: 성공 4, 실패 0, 생략 0 ==========


드이어 빌드 성공했습니다…

뭐여????....한국어에서는 한번에 빌드가 안되는 것 같네요…..

왜그랬을까요???


한국 개발자들이………………..이 경고를 무시해주세요..라고 메일을 보내야 하는 건가?



음…

어떤 파일들이 생성 되었을까요?


gtest.lib라는 파일이 생성 되었다.

d:\mybuild\Debug 라는 폴더에 말이다.


빌드 구성이 총 4개로 되어 있네요….

  • Debug

  • MinSizeRel : 최소 사이즈로 만들어주는 구나~~

  • Release : Release 용~!

  • RelWithDebInfo : 디버그 정보를 가지고 있는 Release용~!


자…

이제 테스트 할 수 있을 것 같은디~~~~!


자.. gtester를 돌려보자…


음….




음…

이제 링크까지 왔다….

자…...lib 파일을 걸어주쥐~~!!




gtest.lib

이 놈을 사용하자…


음...이렇게 했더니…

또 에러가 발생한다…

이런..


심각도 코드 설명 프로젝트 파일

오류 LNK1169 여러 번 정의된 기호가 있습니다. gtest_test001 c:\users\jesus001\documents\visual studio 2015\Projects\gtest_test001\Debug\gtest_test001.exe 1

오류 LNK2038 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MDd_DynamicDebug'(gtest_test001.obj에 위치) 값과 일치하지 않습니다. gtest_test001 c:\Users\Jesus001\documents\visual studio 2015\Projects\gtest_test001\gtest_test001\gtest.lib(gtest-all.obj) 1

오류 LNK2005 "protected: __thiscall std::basic_ios<char,struct std::char_traits<char> >::basic_ios<char,struct std::char_traits<char> >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ)이(가) msvcprtd.lib(MSVCP140D.dll)에 이미 정의되어 있습니다. gtest_test001 c:\Users\Jesus001\documents\visual studio 2015\Projects\gtest_test001\gtest_test001\gtest.lib(gtest-all.obj) 1



음.. MTd MDd...음..어디에서 많이 본것이다…

멀티 쓰레드 용인지 아닌지를 선택하는 것이다…


음…

MTd 를 선택하고 다시 빌드….



1>------ 빌드 시작: 프로젝트: gtest_test001, 구성: Debug Win32 ------

1>  stdafx.cpp

1>  gtest_test001.cpp

1>d:\googletest-master\googletest\include\gtest\internal\gtest-internal.h : warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

1>  gtest_test001.vcxproj -> c:\users\jesus001\documents\visual studio 2015\Projects\gtest_test001\Debug\gtest_test001.exe

========== 빌드: 성공 1, 실패 0, 최신 0, 생략 0 ==========



드디어 성공~~!!!ㅎㅎㅎㅎㅎㅎ

실행해보자…


드디어 성공!!!!!

ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

흐……

gtester를 실행시켰다…..


음..그런데 어디가 테스트부분인지 알겠나?



TEST(GtestSampleTest, testSample) {

 EXPECT_EQ(1, 0); ← 이곳의 값을 틀리게 하면…….. 실패가 나옵니다.^^

}


이렇게~!!


1개를 테스트 했고………………..GtestSampleTset.testSample을 2ms동안….실행시켰고….

그놈은 실패했다는 것이다.~~!!흐흐흫….


음…...이놈을 가지고 테스트를 만들어야 한다….흐흐흐흐흐흐흐흐흐흐흐흐흐ㅡ흐흐



[참고 URL]

http://surpreem.com/archives/626#sthash.6OU7fBDf.dpbs

https://github.com/google/googletest/tree/master/googletest



+ Recent posts