среда, 30 октября 2013 г.

Sublime Text 2 & Windows 7 & MinGW C++: моя конфигурация системы сборки

Sublime Text 2 - отличный текстовый редактор для программистов. Кроме всех вообразимых возможностей текстового редактора он умеет собирать и выполнять программы из исходников. Но настройки сборки и запуска из коробки работают далеко не всегда (а под Windows никогда).
В этой статье опишу кратко свой путь по настройке системы сборки Sublime Text 2 для программ С++ для компилятора MinGW под Windows.
Наиболее полная справка по настройке системы сборки находится на сайте неофициальной документации.

Содержание:

1. Стандартная конфигурация С++
2. Создание новой конфигурации системы сборки
3. Конфигурация сборки
4. Конфигурация запуска
5. Полный листинг конфигурации
6. Использование системы сборки


1. Стандартная конфигурация С++

Для начала посмотрим стандартную конфигурации системы сборки для С++. Находится она в файле %APPDATA%\Sublime Text 2\Packages\C++\C++.sublime-build и в моём случае имеет вид:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
 "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"],
 "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
 "working_dir": "${file_path}",
 "selector": "source.c, source.c++",

 "variants":
 [
  {
   "name": "Run",
   "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
  }
 ]
}

Если строка компиляции похожа на корректную, то строка запуска приложения нам под Windows совсем не подходит. А если в переменную окружения PATH не добавлен путь к  g++, то компиляция также не произойдёт.


2. Создание новой конфигурации системы сборки

Можно править стандартную конфигурацию С++, а можно создать свою. Я создал отдельную конфигурацию, но это необязательно и иногда даже менее удобно (приходится переключать системы сборки вручную).

Для создания новой конфигурации идём в Tools / Build System / New Build System..., в новый файл вставляем текст конфигурации (например, из стандартной конфигурации С++) и сохраняем файл в каталоге %APPDATA%\Sublime Text 2\Packages\, например, в MinGW\MinGW.sublime-build. После этого в Tools / Build System появится новый пункт с именем вашего файла.


3. Конфигурация сборки

На сборку влияют настройки до блока "variants".

cmd

Параметр задаёт строку компиляции. Работает из коробки.
По-умолчанию это "g++ file -o file_base_name". Можно добавлять опции типа "-s" или "-O2" таким образом:
"cmd": ["g++", "${file}", "-o", "${file_base_name}", "-s", "-O2"]
Но если в переменную окружения PATH не добавлен путь к g++ (как правило MinGW/bin), то Sublime просто не найдёт g++. Можно добавить в PATH путь к g++, а можно обойтись параметром path.

path

Если у вас в переменной окружения PATH прописан путь к g++ (как правило MinGW/bin) и он работает, тогда этот параметр вам не нужен.
Этот параметр указывает на то, что во время сборки нужно временно заменить значение переменной окружения PATH, а после окончания сборки возвратить старое значение. Выглядит примерно так:
"path": "C:\\MinGW\\bin\\"
Также позволяет запускать программы без статической линковки библиотек.
file_regex и working_dir можно оставить без изменений.

selector

По этому параметру определяется система сборки, если в Tools / Build System установлено значение Automatic. По-умолчанию файлы *.cpp отсутствуют в селекторе, но система сборки С++ всё-равно выбирается. Если в селектор своей конфигурации добавить source.cpp, тогда в автоматическом режиме будет выбираться она.

encoding

Если в процессе сборки в консоли Sublime вы получили кириллицу в некорректной кодировке, тогда этот параметр вам нужен. Выглядит он примерно так:
"encoding": "cp866"


4. Конфигурация запуска

По-умолчанию параметрами запуска является блок "Run" в параметре "variants". Из коробки не работает в Windows.
Пробовал запуск на обычном консольном приложении типа HelloWorld. После долгих поисков и множественных проб решение для меня было найдено. Вот заветные параметры:
"shell": true,
"cmd": ["start", "${file_base_name}.exe"]


5. Полный листинг конфигурации


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
 "path": "C:\\MinGW\\bin\\",
 "working_dir": "${file_path}",
 "cmd": ["g++", "${file}", "-o", "${file_base_name}.exe", "-static", "-s", "-O2"],
 "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
 "selector": "source.c, source.c++, source.cpp",
 "encoding": "cp866",

 "variants":
 [
  {
   "name": "Run",
   "working_dir": "${file_path}",
   "shell": true,
   "cmd": ["start", "${file_base_name}.exe"]
  }
 ]
}


6. Использование системы сборки

За работу системы сборки отвечают команды из второй группы в меню Tools.

Tools / Build System - выбор системы сборки. Если у вас на автомате некорректно выбирается система сборки, выберите вручную.

Tools / Build [Ctrl+B] - собрать программу (выполнение команды "cmd" из конфигурации).

Tools / Run [Ctrl+Shift+B] - запустить программу (выполнение команды "cmd" из параметра "variants" группы "Run" конфигурации).

Если при сборке или запуске возникли ошибки, нужно пересмотреть конфигурацию системы сборки. Также убедитесь, что используется нужная система сборки.

В начало

2 комментария:

  1. у меня не работает ввод даних с клавиатури.... типа `cin >> a;` ... оно само берет какое то число.... что делать?

    ОтветитьУдалить
  2. Slot Machines Near You - MapyRO
    강릉 출장샵 › › Locations › Hotels › › Locations › Hotels Find your nearest Casino 과천 출장마사지 at any time, in less 문경 출장안마 than 서귀포 출장샵 24 hours. Make sure your next stop near you. 남원 출장마사지

    ОтветитьУдалить