Visual Studio 2017에서 google test 프로젝트 빌드 오류
구글 테스트(google test)를 사용하려면 소스 코드에서 바이너리 파일을 만들어야 하며 Visual Studio로는 이 스크립트로 간편하게 할 수 있다. 그런데 Visual Studio 2017에서 구글 테스트로 작성한 테스트 프로젝트의 C++ 표준 지원 스위치를 /std:c++latest
로 설정하고 빌드하면 tr1
이 std
멤버가 아니라며 무수한 오류를 표시한다. C++17에 포함한 기능이 필요하지 않으면 /std:c++14
로 바꾸고 넘어갈 수도 있지만 테스트 프레임워크 때문에 언어를 제약한다는 건 그야말로 주객전도.
이와 관련있는 내용은 다음과 같다.
- Release 1.8, Visual Studio 2015, /std:c++latest and std::tuple in #872
- googletest uses std::tr1 which will be deprecated in VS 2017 #1111
위 두 이슈 내용을 보면 이를 수정했다는 풀 리퀘스트가 지난해 6월에 있었지만 프로젝트 내부 사정으로 아직 반영을 못하고 있다는 걸 알 수 있다. 새로 빌드해야 하나 싶어 보니 변경 내용이 좀 많다.
이 수정 내용은 반영한 버전이 나오면 가져다 쓰기로 하고, 우선은 구글 테스트 라이브러리를 새로 빌드하는 일도 없이 간단히 해결할 수 있는 방법이 있다. 구글 테스트로 작성한 테스트 프로젝트 속성 정보의 전처리기 정의(preprocessor definitions)에 다음을 추가하면 된다.
1 |
GTEST_LANG_CXX11=1 |