VC .Net 2002 기준입니다.

 

프로젝트 빌드 산출물은 최종 산출물(output)과 중간 산출물(intermediate)가 있습니다.

확장자별로 구분하면 다음과 같죠.

 

최종 산출물

-----------

exe : 실행 파일

dll : 동적링크 라이브러리

(*) lib : 정적링크 라이브러리

 

최종 산출물과 같은 폴더에 위치해야 하나 최종 산출물은 아닌, 개발자용 파일들

-----------

exp : dll 익스포트 정보 파일

pdb : 프로그램 데이터베이스 (디버그 정보)

ilk : 점증적 링크를 위한 정보 파일

(*) lib : 임포트 라이브러리 (DLL인 경우)

 

** lib는 2종류가 있습니다. 정적링크 라이브러리인 경우와 dll을 위한 임포트 라이브러리인 경우입니다.

(물론 기술적으로 내용은 같다고 볼 수 있죠)

 

중간 산출물

--------

obj : 오브젝트 코드

pch : 프리컴파일 정보

idb : 재빌드 최소화 정보 (잘 모름, 탐색기 설명에 이렇게 나옴)

res : 리소스 컴파일 결과

tli : 타입 라이브러리에서 생성된 인라인 함수 소스 파일

tlh : 타입 라이브러리에서 생성된 헤더 파일

map: 링커가 생성하는 정보 파일 (디폴트로 생성 안되지만 옵션 지정시 생성됨)

 

이정도 입니다.

 

그리고 VC 프로젝트에서는  최종 산출물 생성 경로와 중간 산출물 생성 경로, 이렇게 2가지를 지정할 수 있습니다.

모두 프로젝트 프로퍼티에서 지정하죠.

이후, 디폴트 상태에서 각 파일들의 생성 경로는 직접 세부 옵션에서 지정해줘야 합니다.

이때 $(OutDir), $(IntDir) 이런 매크로를 사용하면 편하죠.

 

*** 추가 정보 ***

 

(1) pdb 파일

pdb는 디버그 정보 파일입니다.

왠만하면 디버그 버전이든 릴리즈 버전이든 디버그 정보가 항상 생성되도록 하는 게 좋겠죠.

그리고 실행모듈(exe, dll)과 같은 폴더에 위치해야 합니다.

릴리즈 빌드에서 pdb가 안 나오게 하려면 링커 옵션에서 디버그 정보 생성 옵션을 끄면 되겠죠.

 

(2) ilk 파일

이건 점증적 링크(incremental link) 기능을 사용하는 경우 링커가 생성하는 파일입니다.

그러니 최종 산출물이 아닌데도 불구하고 exe, dll과 같은 폴더에 생성됩니다.

보통은 릴리즈 빌드에선 링커 최적화 기능을 사용하고, 이때는 점증적 링크 기능을 못 쓰기 때문에 ilk가 생성되지 않는데요, 최종 산출물이 너무 커서 릴리즈 빌드에서도 점증적 링크를 사용한다면 ilk 파일이 생깁니다.

 

(3) dll 관련 파일

dll은 파일이 좀 많습니다.

기본 산출물이 dll, lib (임포트 라이브러리), exp(익스포트정보) 이렇죠.

lib와 exp 경로를 각각 지정할 수 있는 걸로 알았는데 지금 찾아보니 그런 옵션이 없네요.

lib 경로를 지정하면 exp 경로도 결정되나 봅니다.

lib 경로는 링커 고급 옵션, 임포트 라이브러리 옵션으로 지정합니다(/IMPLIB 옵션).

즉 output 경로를 지정하면 dll 생성 위치가 결정되고 임포트 라이브러리 경로를 지정하면 lib, exp 생성 위치가 결정됩니다.

  http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=6174

'tool' 카테고리의 다른 글

doxygen  (0) 2011.12.06
crash dump  (0) 2011.11.11
WinDbg  (0) 2011.01.30
vs2008 프로젝트속성 상속  (0) 2010.09.27
Visual Studio 2008과 Windows 98  (0) 2009.06.12
블로그 이미지

란마12

,