[Visual C++] Visual studio project setting

1. 3rdparty

써드파티 라이브러리를 사용할땐 항상 ($SolutionDir)3rdparty 라는 폴더를 만들고 사용하도록 하자.

전체 솔루션의 구조는 아래와 같다.

($SolutionDir)
┌ 3rdparty
│   ├ include
│   ├ lib
│   │   ├ x64
│   │   └ x86
│   └ bin
│       ├ x64
│       └ x86
├ project
├ solution.sln
├ x64
│   ├ Debug
│   └ Release
└ x86
    ├ Debug
    └ Release

먼저, 3rdparty/bin 에 있는것들은 x64, x86 폴더에 빌드 할때마다 파일(dll)이 복사되도록 해야한다.(x64,x86 폴더를 나중에 지워도 되게)

정규식이 가능하다면 정규식을 이용하 Debug 용과 Releasedll 을 각각 올바른 위치로 복사한다. 아래는 opencv3.2.0 을 사용하는 프로젝트 에서의 명령줄 예시이다.

[구성 속성]->[빌드 이벤트]->[빌드 후 이벤트]->[명령줄]

Debug

xcopy /Y "$(SolutionDir)3rdparty\bin\*d.dll" "$(TargetDir)"  

Release

xcopy /Y "$(SolutionDir)3rdparty\bin\*0.dll" "$(TargetDir)"  

이제 include 폴더를 설정 한다.

[구성 속성]->[C/C++]->[일반]->[추가 포함 디렉터리]

$(SolutionDir)3rdparty/include/

마지막으로 lib 폴더를 설정한다.

[구성 속성]->[링커]->[일반]->[추가 라이브러리 디렉터리]

$(SolutionDir)/3rdparty/lib/x64   #플랫폼에 따라 조정

그리고 아래 옵션에서 사용될 lib들을 나열한다.

[구성 속성]->[링커]->[입력]->[추가 종속성]

명령 프롬프트 에서 dir /B *.lib 와 같이 입력하면 쉽게 Ctrl+C/V 로 복붙 할 수 있다.

2. 작업 디렉터리 설정

[구성 속성]->[디버깅]->[작업 디렉터리]

$(SolutionDir)$(Platform)\$(Configuration)\

디버깅용 디렉터리와 실행용 디렉터리가 다른건 모두 알고 있을 것이다.

이를 실행용 디렉터리로 항상 고정시켜놓는것이 좋다.

3. 로컬 데이터베이스 파일

VS2013sdfVS2015db 파일은 프로젝트에 종속될 필요가 없다.

[도구]->[옵션]->[텍스트 편집기]->[C/C++]->[고급]->[대체 fallback 위치]

에서 아래와 같이 설정한다.

윈도우의 임시 폴더에 db 파일이나 sdf 파일을 만드는 방법이다.

4. clean 파일 만들기

프로젝트를 배포할때 매번 필요없는 파일들을 삭제하지말고 배치파일로 삭제 파일을 만들자.

아래와 같이 쓸모없는 폴더나 파일을 삭제한다.

DEL 명령어와 RMDIR 명령어만 알면 된다.

IF EXIST "solution.VC.db" (  
    DEL "solution.VC.db"
)
IF EXIST "x64" (  
    RMDIR /S /Q "x64"
)