VC++ Minimum Rebuild 옵션(/Gm)...

프로젝트 Property -> C/C++ -> Code Generation -> Enable Minimal Rebuild 라는 옵션이 있는데, 디폴트 값인 /Gm은 "클래스 정의의 변화가 있는지 감지하여, 오직 그 변화에 영향받는 소스 파일들만을 재컴파일하는" 옵션이란다.

설명서를 좀 읽어보니, 자세하지는 않았지만, 처음 컴파일할 경우, 클래스 정의(아마도, 헤더(.h)에 정의되어 있을 것이다)를 .idb 파일로 컴파일하고, 나중에 그 파일을 이용해서 소스 파일들을 컴파일하는 것 같다. 클래스 정의에 변경이 없다면, 계속 먼저 만들어 놓은 그 .idb 파일을 이용하여 소스 파일들을 컴파일하게 되므로 좀 빠르기는 할 것이다.

그런데, 이게 좀 이상하다. 어떤 경우에는 클래스 정의의 변경이 소스 파일들에 반영되는 듯하다가, 어떤 때는 그게 잘 안되는 것 같다.

되다, 안되다 그런다. (아마도 내가 문제의 원인을 깊이 있게 파악하지 못해서이리라. VC++의 버그는 아닐 것이다.)

특히, 클래스의 멤버 함수가 디폴트값을 가질 경우, 그 디폴트값을 살짝 변경시켜 다시 빌드하게 되면, 변경된 값이 반영되지 않았다.

VS 2003이나 2008에서 테스트를 해 보았는데, 동일한 문제가 있었다.

디폴트값을 가지는 멤버 함수를 종종 사용하고, 때로는 그 값들을 수시로 변경할 때가 있는데, 그러한 변경이 반영되지 않을 수 있으니, VC++ 프로젝트를 시작할 때는 언제나 /Gm 옵션은 끄도록 하는 것이 좋겠다.

참고로, Release 모드의 경우에는 디폴트로 그 옵션이 꺼져 있었다. 위 문제점은 Debug 모드의 디폴트 설정이 일으킬 수 있는 문제점이다.

by 돌멩이 | 2008/06/21 23:23 | C, C++ | 트랙백(1)

트랙백 주소 : http://techmania.egloos.com/tb/1805861
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from at 2014/03/11 00:31

제목 : buy pure garcinia cambogia
line3...more

※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지다음 페이지 ▶