당신의 빌드는 안녕하십니까?

제목과 달리 찾아보기 정보(Browse Information)이라는 Visual C++ 의 구성 속성에 대한 이야기이다.

image

놀랍게도 매우 눈에 잘 띄는 곳에 있는데도 이 옵션의 용도에 대해 아는 사람은 거의 없었다. 이래저래 찾아보니 Visual Studio 의 인텔리센스 기능이 약할 오래 전(아마도 6.0일 때) 들어온 옵션인 모양이다. 간단히 말하자면 당시의 인텔리센스 기능을 활성화 또는 보강하는 정도의 역할을 했던 것 같다. 그러나 세월이 흐름에 따라 Visual Studio 의 Intellisense 기능이 전과 비교 못할 정도로 좋아졌고 이제는 그 존재 이유가 거의 사라졌다.

그러니 이 옵션을 쓸 일이 없고, 실제로 새 프로젝트를 생성하면 옵션이 비활성화되어 있다. 그런데 왜 여기서 굳이 찾아보기 정보에 대해 이야기하느냐?

문제는 레가시 프로젝트이다. 오래 전에는 이 기능이 기본적으로 활성화되어 있었던 듯 한데, 그 점은 확실하지 않다. 하지만 꽤 널리 쓰인 기능이었는지 레가시 프로젝트 중에는 이 옵션이 여전히 켜진 경우가 있다. 짐작하기로는 Visual C++ 6.0 프로젝트를 상위 버전으로 마이그레이션할 때 이런 일이 벌어지는 듯 하다.

그런데 이 옵션을 켜면 빌드가 상당히 느려진다. 실제로 이 옵션을 끄는 것만으로 빌드 시간이 40% 가까이 단축되기도 했다. 그러므로 Visual Studio 2008 / 2010 사용자라면 이 옵션을 끄는 게 당연하다. 하지만 그 과정이 생각보다 까다롭다.

기본적으로는 위의 그림에서 보듯 [구성 속성 – C/C++ / 찾아보기 정보 – 찾아보기 정보 사용]을 ‘없음’으로 바꾸면 기능이 비활성화되어야 한다. 그러나 레가시 프로젝트를 마이그레이션한 경우에 이 방법이 안 먹히기도 한다. 아무리 옵션을 꺼도 아래와 같이 “찾아보기 정보 파일 만들고 있습니다…”라는 메시지가 뜬다.

image

이는 “찾아보기 정보” 속성이 프로젝트가 아닌 소스파일 수준에서 활성화되어 있기 때문이다. 하지만 수십 또는 수백 개나 될 소스파일의 구성 속성을 일일이 바꿔주기는 귀찮다. 이럴 때는 모든 .vcproj 파일을 텍스트 편집기에서 다 열어서 아래와 같은 값을 일괄적으로 삭제해버리면 된다.

BrowseInformation="1"

해당 속성 값이 명시되지 않으면 비활성화한 것으로 처리하므로 BrowseInformation 값을 0으로 바꾸는 것보다 이 편이 낫다.

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu