Visual Studio 2019 에서 빌드 이벤트에 대해 알아보겠습니다.
빌드 이벤트는 개발할 때 보단 배포, 혹은 유지보수 할 때 용이한 기능입니다.
문자 그대로 빌드에 대한 이벤트이고, 프로젝트를 우클릭 하여 속성(Alt + Enter)에서 구성 속성 -> 빌드 이벤트에서 설정 할 수 있습니다.
빌드 전, 링크 전, 빌드 후 이벤트 중에서 빌드 후 이벤트를 많이 사용하니, 빌드 후 이벤트에서 명령줄을 입력해보겠습니다.
우선 자주쓰는 매크로부터 알아보겠습니다.
매크로 | 설명 |
$(ConfigurationName) | 현재 프로젝트의 구성 이름 |
$(OutDir) | 출력 파일 디렉터리의 경로 |
$(DevEnvDir) | Visual Studio 설치 디렉터리 |
$(PlatformName) | 현재 플랫폼의 이름 |
$(ProjectDir) | 프로젝트 디렉터리 |
$(ProjectPath) | 프로젝트의 절대 경로 이름 |
$(ProjectName) | 프로젝트의 기본 이름 |
$(ProjectFileName) | 프로젝트의 파일 이름 |
$(ProjectExt) | 프로젝트의 파일 확장명 |
$(SolutionDir) | 솔루션 디렉터리 |
$(SolutionPath) | 솔루션의 절대 경로 이름 |
$(SolutionName) | 솔루션의 기본 이름 |
$(SolutionFileName) | 솔루션의 파일 이름 |
$(SolutionExt) | 솔루션의 파일 확장명 |
$(TargetDir) | 빌드에 대한 기본 출력 파일의 디렉터리 |
$(TargetPath) | 빌드에 대한 기본 출력 파일의 절대 경로 |
$(TargetName) | 빌드에 대한 기본 출력 파일의 기본 이름 |
$(TargetFileName) | 빌드에 대한 기본 출력 파일의 파일 이름 |
$(TargetExt) | 빌드에 대한 기본 출력 파일의 확장명 |
전체 매크로는 아래처럼 명령줄 편집에 들어가서 매크로 버튼을 클릭하여 알 수 있습니다.
그 다음으로는 위 매크로를 이용하여 실제로 빌드 후에 명령을 해보겠습니다.
첫번째로는 폴더 만들기 입니다. 빌드 후 이벤트에 아래와 같이 mkdir “$(TargetDir)folder1”이라고 입력합니다.
.exe가 생성되는 타겟 디렉터리에 folder1이라는 폴더를 만들어 내는 명령줄입니다.
입력할 때 중요한 점은 매크로에 “”을 입력해주는 것 입니다. 경로에 빈 문자열이 있으면 인식이 안되거든요
아래에 평가 값에는 입력한 값에 대한 실제 적용될 값을 보여줍니다.
입력 후 빌드를 하게되면 아래와 같이 경로에 folder1이 생성 됩니다.
만약 존재 유무를 따져서 폴더를 만드려면 명령줄 맨 앞에 IF NOT EXIST를 붙이시면 됩니다.
IF NOT EXIST "$(TargetDir)folder1" mkdir "$(TargetDir)folder1"
폴더를 생성했다면 두번째로는 파일을 복사하는 것 입니다. 파일을 복사하기 위해서는 copy 명령어를 사용해야 합니다.
생성된 파일을 위에 빌드 후 이벤트로 생성한 폴더에 copy합니다.
IF EXIST "$(TargetPath)" copy "$(TargetPath)" "$(TargetDir)folder1\$(TargetFileName)"
복사 같은 경우 .exe 뿐만 아니라 .pdb 파일도 아래 명령줄로 복사 할 수 있습니다.
IF EXIST "$(TargetDir)$(TargetName).pdb" copy "$(TargetPath)" "$(TargetDir)folder1\$(TargetName).pdb"
위 방법으로 빌드 후에 자동으로 .pdb를 관리함으로써 유지보수에 용이하게 사용할 수 있습니다.
(pdb 파일을 어디에 쓰는지 모르시면 여기 링크를 참고하시면 됩니다.)
꼭 .exe나 .pdb 같이 빌드 후 결과물만 복사할 필요는 없습니다. 사용 설명서나 pdf파일 등을 실행 파일 경로로 옮기셔도 되고, 설치 파일을 만들기 위해 관리용으로 사용하셔도 됩니다.