재미나고 유용한 VC 옵션 한가지

한방빌드를 만들어서 쓰다보면, 다음과 같은 경우가 생깁니다.

1. 소스 트리는 하나로 유지하고 싶다.

2. 나가는 대상에 따라서 서로 다른 기능이 동작해야 한다.(바이너리에서 완전히 빠져있게)

사실 결론은 하나입니다. #ifdef 등으로 기능이 다르게 동작하게 하는 것.

그럼 여기에 적용할 수 있는 간단한 방법은 다음과 같습니다.

1. 소스 트리를 따로 유지한다. –> 1번에 위배되고, 유지보수에 손이 많이 갑니다.

2. 프로젝트 속성을 여러개 만들어서, 사용한다. 하지만, 이것도, 한 솔루션에 프로젝트가 여러 개 있다면, 굉장히 번거로운 작업이 생깁니다.

3. 하나의 프로젝트 속성을 쓰데, 매번, 빌드 할 때, #define 속성을 변경해준다.

4. 빌드 시, 자동으로 소스 코드에 설정에 맞는 #define 이 들어가도록 빌드 스크립트를 작성한다.

위에 것들을 보면 4번이 그래도 가장 나아보입니다. 그리고, 설정 작업이 복잡해 진다면, 4번 형태로 가는게 좋을듯 합니다.

그런데, 지금부터 알려드릴(이미 공개된 ㅋㅋ) 옵션을 사용하게 되면, 한방에 처리가 됩니다.

뭐냐 하면,  CL 이라는 환경 변수입니다.

먼저 자세한 건 다음 사이트에서 알 수 있습니다.

http://msdn.microsoft.com/en-us/library/kezkeayy.aspx

간단하게 설명하자면 set CL=-D_TEST_A_

이런식으로 지정하면 빌드시에 자동으로 _TEST_A_ 옵션이 적용됩니다. –D 뿐만 아니라 다른 것들도 쉽게 바뀌게 됩니다. 즉, 같은 빌드 프로세스를 타면서 앞쪽에 CL옵션을 설정해서 #define 한것과 같은 효과를 낼 수 있습니다.

간단한 빌드 프로세스에서는 위의 4번과 같은 방법을 쓰지 않고도 효과적으로 사용할 수 있습니다.