반응형

http://blog.naver.com/cmsscv/130095956880



※빌드 전, 후에 exe, lib, dll, 이미지, 사운드 파일등을 원하는 위치에 복사하고 싶은때... 일일이 필요한 파일을 프로젝트 폴더에 복사해야되었다. 이런 작업들을 줄일 수 있는 방법을 소개하고자한다.

 

ex)dll파일을 컴파일 하였다. lib 파일과 dll 파일을 프로젝트 파일로 복사하거나 경로를 링커와 추가라이브러리 경로를 설정해줘야 한다.

-가장 효율적인 방법은 프로젝트 폴더에 lib, dll 폴더를 만들어 그곳을 각각 참조하는 것이 깔끔할것 같다.

 

-컴파일 할때 마다... 이작업을 해야된다.

 

-더이상 이런 방식으로는... 편한 방법을 찾다보니... Build Event를 통한 다양한 명령을 실행 할 수 있다는걸 알게 되었다.

-프로젝트에서 오른쪽 클릭 Properties > Configuration Properties > Build Event > Post-Build Event

 

-Command Line 에 xcopy ..\CreateDLL\*.h ..\D3DEngine /s /D 를 입력하고 컴파일을 하면 CreateDLL 폴더의 모든 헤더 파일을 D3DEngine 폴더에 복사한다는 명령이 실행된다. 이와 같이 다른 파일들도 복사가 가능하다.

 

※하지만....!!!!!!! 파일 갱신이 안된다. 그래서 찾은 방법은 삭제 후 복사 !!

 

★Pre-Build Event: 우선 경로에 파일이 있을 경우 모두 삭제 해줌으로서 업데이트가 안되는 파일이 없도록 한다.

-' 만약에 다음 경로에 dll 형식의 파일이 존재한다면 다음 경로에 dll파일들을 모두 삭제한다.'

 

IF EXIST "$(ProjectDir)..\Debug\*.dll" DEL "$(ProjectDir)..\Debug\*.dll"
IF EXIST "$(ProjectDir)..\Debug\*.lib" DEL "$(ProjectDir)..\Debug\*.lib"
IF EXIST "$(ProjectDir)..\D3DEngine\*.lib" DEL "$(ProjectDir)..\D3DEngine\*.lib"
IF EXIST "$(ProjectDir)..\D3DEngine\*.dll" DEL "$(ProjectDir)..\D3DEngine\*.dll"
IF EXIST "$(ProjectDir)..\D3DEngine\testdll.h" DEL "$(ProjectDir)..\D3DEngine\testdll.h"
IF EXIST "$(ProjectDir)..\D3DEngine\testlib.h" DEL "$(ProjectDir)..\D3DEngine\testlib.h"

 

☆Post-Build Event: 헤더파일과 컴파일된 파일들을 찾아서 최종 프로젝트 폴더에 복사한다.

-'다음 경로의 모든 같은형식의 파일을 다음 경로로 복사한다'

 

xcopy ..\CreateDLL\*.h ..\D3DEngine
xcopy ..\Debug\*.lib ..\D3DEngine
xcopy ..\Debug\*.dll ..\D3DEngine

//-업데이트가 되지 않는다.(파일이 존재하면 파일을 복사하지 않는다.)

 

copy ..\CreateDLL\*.h ..\D3DEngine
copy ..\Debug\*.lib ..\D3DEngine
copy ..\Debug\*.dll ..\D3DEngine 

//-삭제 하고 다시 복사 할 필요가 없다!! 그냥 복사 시 업데이트가 된다.

빌드 이벤트 명령어

http://msdn.microsoft.com/ko-kr/library/c02as0cs(VS.80).aspx

반응형

+ Recent posts