Build systems(앞으로는 빌드 시스템으로 표기)은 외부 프로그램을 통해서 파일들을 실행할 수 있게 해주고 Sublime Text 안에서 생성한 출력을 볼 수 있게 해준다.빌드 시스템은 2, 3 부분 정도로 구성되어 있다:
Sublime Text 커맨드는 .sublime-build 파일에 저장되어 있는 data를 받는다. 이 시점에서, 커맨드는 파일들을 빌드하는데 필요한 일을 한다. 기본적으로, 빌드 시스템은 exec 커맨드를 사용하고 exec 커맨드는 Packages/Default/exec.py 에 구현되어 있다. 아래에서 설명을 하겠지만, 이 커맨드를 오버라이드할 수 있다.
외부 프로그램은 파일들을 빌드하려고 만든 쉘 스크립트이거나 make 나 tidy 같은 잘 알려져 있는 유틸리티일 것이다. 대게는, 이 실행 파일들은 실행하는데 참조가 되는 스위치들과 옵션들과 함께 파일들이나 디렉토리들에 대한 경로를 받는다.
빌드 시스템은 특별한 이유가 없다면, 그 어떤 외부 프로그램도 호출할 필요는 없다: Sublime Text 커맨드에서 전체 빌드 시스템을 구현할 수 있다.
에러 정보를 잡아내면, F4와 Shift + F4를 이용해서 프로젝트 파일에 있는 에러 인스턴스들을 찾아갈 수 있다. 가능하다면, 잡아낸 에러 메시지가 상태바에 표시될 것이다.
이 경우에는, ant 가 윈도우를 제외한 각각의 플랫폼에서 실행이 될 것이고, 윈도우에서는 ant.bat 가 실행될 것이다.
이러한 설정이 주어지면, Ctrl + B 는 data 커맨드를 실행하고 Ctrl + Shift + B 는 파이썬 인터프리터를 실행하고 남아 있는 variants는 빌드 시스템이 활성화 되었던 커맨드 팔레트에 나타날 것이다.
${project_name:Defualt}
이 설정은 프로젝트가 하나만 있으면 현재 프로젝트의 이름을 내보내고, 그 외에는 Default 를 내보낸다.
특정 OS에서는, PATH 에 대한 값이 터미널 윈도우에서부터 일반 어플리케이션까지 다양하게 있을 수 있다. 그래서, 빌드 시스템에서 사용하고 있는 커맨드가 커맨드 라인에서 잘 작동을 하더라도, Sublime Text에서는 제대로 작동하지 않을 수도 있다. 이는 쉘의 유저 프로파일 때문이다.
이를 해결하려면, 원하는 PATH를 확실하게 설정을 해서 Sublime Text 같은 일반 어플리케이션이 찾을 수 있어야 한다. 좀더 자세한 내용은 아래의 링크를 보라.
다른 대안으로는, cmd에 명시된 실행 파일의 위치를 알려주는 PATH를 오버라이드하는 .sublime-build 파일에 있는 path 요소를 사용할 수 있다. PATH 에 대한 새로운 값은 빌드 시스템이 실행 되는 동안에만 효과가 있다. 실행이 된 후에는 이전 PATH 값으로 복구된다.
- JSON 포맷의 configuration data(.sublime-build 파일들)
- 빌드 프로세스를 실행하는 Sublime Text 커맨드
- 추가로, 외부 실행 파일(스크립트, 바이너리 파일)
Sublime Text 커맨드는 .sublime-build 파일에 저장되어 있는 data를 받는다. 이 시점에서, 커맨드는 파일들을 빌드하는데 필요한 일을 한다. 기본적으로, 빌드 시스템은 exec 커맨드를 사용하고 exec 커맨드는 Packages/Default/exec.py 에 구현되어 있다. 아래에서 설명을 하겠지만, 이 커맨드를 오버라이드할 수 있다.
외부 프로그램은 파일들을 빌드하려고 만든 쉘 스크립트이거나 make 나 tidy 같은 잘 알려져 있는 유틸리티일 것이다. 대게는, 이 실행 파일들은 실행하는데 참조가 되는 스위치들과 옵션들과 함께 파일들이나 디렉토리들에 대한 경로를 받는다.
빌드 시스템은 특별한 이유가 없다면, 그 어떤 외부 프로그램도 호출할 필요는 없다: Sublime Text 커맨드에서 전체 빌드 시스템을 구현할 수 있다.
File Format
빌드 시스템 파일들은 JSON 을 사용한다. 여기에 예제가 있다:
Options
- cmd : 실행할 커맨드와 인자들을 가지고 있는 배열. 절대 경로를 명시하지 않으면, 외부 프로그램은 시스템의 환경 변수들 중에 하나인 PATH 를 탐색할 것이다.
- File_regex : Optional. cmd 의 에러 출력을 잡아내는 정규 표현식(펄 스타일). 자세한 내용은 다음 섹션을 참고
- line_regex : Optional. file_regex 가 현재 라인에서 일치하는 것이 없고 line_regex가 존재하고 일치하는 것이 있다면, file_regex 와 일치하는 라인이 발견될 때까지 버퍼를 통해서 되돌아 간다. 그래서 파일과 라인을 결정하는 두 일치되는 내용을 goto 에 사용한다.
- selector : Optional. Tools > Build System > Automatic 이 true 일 때 사용된다. Sublime Text는 활성화된 뷰의 적절한 빌드 시스템을 찾는데 이 scope selector를 사용한다.
- working_dir : Optional. cmd를 실행하기 전에 current directory를 바꿀 디렉토리. 원래의 current directory는 나중에 복구된다.
- encoding : Optional. cmd 의 출력 인코딩. 반드시 유효한 파이썬 인코딩이어야 한다. 기본값은 UTF-8.
- target : Optional. 실행될 Sublime Text 커맨드. 기본값은 exec(Packages/Default/exec.py). 이 커맨드는 .bulid-system 파일에 명시되어 있는 configuration data를 받는다. 기본 빌드 시스템 커맨드를 오버라이드 할 수도 있다. 빌드 시스템의 기본 커맨드 오버라이드를 선택하면 .sublime-build 파일에 임시 변수를 추가할 수 있다.
- env : Optional. cmd 에 전달되기 전에 현재 프로세스에 머지될 환경 변수의 딕셔너리. 예를 들면, 시스템 설정을 손대지 않고 환경 변수를 추가하거나 변경할 수 있다.
- shell : Optional. true 로 설정되어 있으면, cmd는 쉘을 통해서 실행될 것이다(cmd.exe, bash..)
- path : Optional. 이 스트링은 cmd가 호출되기 전에 현재 프로세스의 PATH를 대체한다. 이전 PATH 값은 실행된 이후에 복구된다. 시스템의 설정을 건드리지 않고 PATH에 디렉토리를 추가하려면 이 설정을 사용하면 된다.
- variants : Optional. 매인 빌드 시스템의 옵션을 오버라이드하는 옵션들의 딕셔너리 리스트. Variant "name" 은 빌드 시스템의 selector 가 활성화된 파일과 일치하면 용이한 접근을 위해서 커맨드 팔레트에 나타난다.
- name : variant 내에서만 유효한 옵션. variant 빌드 시스템을 식별한다. name이 Run이면, variant가 Tools > Build System 메뉴 아래에 나타날 것이고 Ctrl + Shift + B 에 바인딩 될 것이다.
Capturing Error Output with file_regex
file_regex 옵션은 빌드 프로그램의 출력에서 네가지 필드로 에러 정보를 잡아내는데 펄 스타일의 정규표현식을 사용한다. 주로 파일 이름, 라인 넘버, 컬럼 넘버, 에러 메시지이다. 이 정보들을 잡아내는데 패턴에 있는 그룹을 사용한다. 파일 이름 필드와 라인 넘버 필드는 반드시 필요하다.에러 정보를 잡아내면, F4와 Shift + F4를 이용해서 프로젝트 파일에 있는 에러 인스턴스들을 찾아갈 수 있다. 가능하다면, 잡아낸 에러 메시지가 상태바에 표시될 것이다.
Platform-specific Options
윈도우와 OSX 그리고 리눅스는 빌드 시스템에 있는 플랫폼 고유의 데이터를 제공할 수 있게 해준다. 여기에 예제가 있다:이 경우에는, ant 가 윈도우를 제외한 각각의 플랫폼에서 실행이 될 것이고, 윈도우에서는 ant.bat 가 실행될 것이다.
Variants
여기에 variants를 이용해서 제작된 빌드 시스템의 예제가 있다.이러한 설정이 주어지면, Ctrl + B 는 data 커맨드를 실행하고 Ctrl + Shift + B 는 파이썬 인터프리터를 실행하고 남아 있는 variants는 빌드 시스템이 활성화 되었던 커맨드 팔레트에 나타날 것이다.
Build System Variables
빌드 시스템은 .sublime-build 파일에서 다음의 변수들을 확장한다:$file_path | The directory of the current file, e. g., C:Files. |
$file | The full path to the current file, e. g., C:FilesChapter1.txt. |
$file_name | The name portion of the current file, e. g., Chapter1.txt. |
$file_extension | The extension portion of the current file, e. g., txt. |
$file_base_name | The name only portion of the current file, e. g., Document. |
$packages | The full path to the Packages folder. |
$project | The full path to the current project file. |
$project_path | The directory of the current project file. |
$project_name | The name portion of the current project file. |
$project_extension | The extension portion of the current project file. |
$project_base_name | The name only portion of the current project file. |
Place holders for Variables
snippets에서 발견된 사항들이 이 변수들과 함께 사용될 수 있다. 예를 들면:${project_name:Defualt}
이 설정은 프로젝트가 하나만 있으면 현재 프로젝트의 이름을 내보내고, 그 외에는 Default 를 내보낸다.
${file/\.php/\.txt/}이 설정은 현재 파일의 전체 경로를 내보내면서 .php 를 .txt 로 대체한다.
Running Build Systems
Tools > Build System 에서 원하는 빌드 시스템을 선택하고, Tools > Build 나 F7을 누른다.Troubleshooting Build Systems
실행 파일에 대한 절대 경로를 명시하지 않았다면, 빌드 시스템은 PATH 에서 실행 파일을 찾을 것이다. 그러므로, PATH 변수는 반드시 정확하게 설정되어 있어야 한다.특정 OS에서는, PATH 에 대한 값이 터미널 윈도우에서부터 일반 어플리케이션까지 다양하게 있을 수 있다. 그래서, 빌드 시스템에서 사용하고 있는 커맨드가 커맨드 라인에서 잘 작동을 하더라도, Sublime Text에서는 제대로 작동하지 않을 수도 있다. 이는 쉘의 유저 프로파일 때문이다.
이를 해결하려면, 원하는 PATH를 확실하게 설정을 해서 Sublime Text 같은 일반 어플리케이션이 찾을 수 있어야 한다. 좀더 자세한 내용은 아래의 링크를 보라.
다른 대안으로는, cmd에 명시된 실행 파일의 위치를 알려주는 PATH를 오버라이드하는 .sublime-build 파일에 있는 path 요소를 사용할 수 있다. PATH 에 대한 새로운 값은 빌드 시스템이 실행 되는 동안에만 효과가 있다. 실행이 된 후에는 이전 PATH 값으로 복구된다.
댓글 없음:
댓글 쓰기