Русское сообщество Sublime Text

Основной раздел => Вопросы и ответы => Тема начата: MADONZY от Октября 04, 2013, 16:33:33

Название: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 04, 2013, 16:33:33
Всем привет!
Надеюсь на этом специализированном форуме по Sublime Text мне сразу же помогут)
Перехожу к делу... Я начал изучать язык программирования C (до этого писал на JavaScrip, PHP). Но вот столкнулся с проблемой что при написании файла (hello.c) с содержимым:
Цитировать
#include <stdio.h>
int main()
{
   float x;
   printf("Type price = ");
   scanf("%f",&x);
   printf("You typed price = %f \n\r",x);
   return 0;
}
и нажатием Ctrl+B (или F7), то внизу вылазит Build окошко абсолютно пустое!
а в консоли пишет:
Цитировать
Running c:\MinGW\g++ C:\www\htdocs\hello.c -o C:\www\htdocs/hello
Encoding error...
VARIABLE:  COMPUTERNAME  : 
Traceback (most recent call last):
  File ".\sublime_plugin.py", line 337, in run_
    return self.run(**args)
  File ".\exec.py", line 159, in run
  File ".\exec.py", line 50, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 10: ordinal not in range(128)

подскажите мне пожалуйста в чём может быть проблема?
вот настройки с C++ build:
Цитировать
{
   "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}'"]
      }
   ]
}
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 04, 2013, 17:36:12
Когда компилил под Windows, вроде бы проблем не было. Нагуглил такое решение:

Заменить строку в файле exec.py
proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())на
os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 04, 2013, 18:03:17
Когда компилил под Windows, вроде бы проблем не было. Нагуглил такое решение:

Заменить строку в файле exec.py
proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())на
os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())

Сделал как ты сказал и теперь при нажатии на Ctrl+B (или F7) в окне Build появляется такое:
Цитировать
[Error 2]
[cmd:  [u'g++', u'C:\\www\\htdocs\\hello.c', u'-o', u'C:\\www\\htdocs/hello']]
[dir:  C:\www\htdocs]
[path: C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;C:\php;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\]
[Finished]
Что это значит? Как сделать что-бы создавался файл с расширением *.exe в папке проекта?
P.S: В переменные среды я никаких изменений не вносил! Читал где-то что нужно. Стоит ли?
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 04, 2013, 18:31:14
Добавить в переменную PATH путь до твоего g++.

Пуск > Компьютер > Свойства > Дополнительные параметры > Параметры среды

Переменная path > изменить > в конец дописать ;c:\MinGW\bin (или ту директорию, в которую у тебя установлен MinGW).
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 04, 2013, 19:47:38
Добавить в переменную PATH путь до твоего g++.

Пуск > Компьютер > Свойства > Дополнительные параметры > Параметры среды

Переменная path > изменить > в конец дописать ;c:\MinGW\bin (или ту директорию, в которую у тебя установлен MinGW).
Добавил, но всё же всё равно конфиг для С поставил такой:
Цитировать
{
   "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c",
   "shell": true,
   "path": "C:\\MinGW\\bin\\"
}
а для С++ такой:
Цитировать
{
   "cmd": ["g++", "${file}", "-static-libstdc++", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c++",
   "shell": true,
   "path": "C:\\MinGW\\bin\\"
}
Всё работает идеально!!! Но! Теперь вопрос №2! Как сделать что-бы при сохранении этот *.exe сразу-же запускался?
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 04, 2013, 21:50:14
Никто не знает как запустить откомпилированный файл после завершения компиляции? :(
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 05, 2013, 00:58:04
Даблклик? ;)
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 02:48:25
Даблклик? ;)

ахахах))) подъ*бал))))))))))
имеется в виду что-бы сразу после нажатия Ctrl+b происходила компиляция и открывался откомпилированый *.exe )))
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 14:07:25
Ну так как?)))
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 05, 2013, 14:45:59
Компиляция и запуск должны происходить командой Run (Ctrl+Shift+B). Но под Windows она не работает. Нашел такое решение:

{
  "variants":
  [
    {
      "name": "Run",
      "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "${file_path}/${file_base_name}"], // Заменить.
      "shell": true // Добавить.
    }
  ]
}
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 16:12:24
Я очень извиняюсь, но не мог-бы ты исправить мои 2 кода, а то я что-то не очень допонял куда то вставлять и что менять(((
Цитировать
{
   "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c",
   "shell": true,
   "path": "C:\\MinGW\\bin\\"
}
а для С++ такой:
Цитировать
{
   "cmd": ["g++", "${file}", "-static-libstdc++", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c++",
   "shell": true,
   "path": "C:\\MinGW\\bin\\"
}
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 16:18:18
я сделал вот так:
{
   "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c",
   "shell": true,
   "path": "C:\\MinGW\\bin\\",
   "variants":
  [
    {
      "name": "Run",
      "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "${file_path}/${file_base_name}"],
      "shell": true
    }
  ]
}
и теперь при нажатии не Ctrl+Shift+b у меня выскакивает такое:
(http://i.imm.io/1hAal.jpeg)
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 16:21:45
но мой файл не запускается...просто командная строка и всё
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 05, 2013, 17:15:48
С настройками, вроде, все правильно.

Такой косяк получается, если в пути до файла есть пробелы.
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 18:25:25
С настройками, вроде, все правильно.

Такой косяк получается, если в пути до файла есть пробелы.
и что с этим делать?((
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 18:26:54
а то что пробелы в названии папки это ничего?
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: Loac от Октября 05, 2013, 21:45:16
Я говорю, что по дороге до папки с проектом не должно быть пробелов.

Переложи файлы в папку с названием, например, c:\dev
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: MADONZY от Октября 05, 2013, 22:27:59
Я говорю, что по дороге до папки с проектом не должно быть пробелов.

Переложи файлы в папку с названием, например, c:\dev

Громадное СПАСИБИЩЕЕ!!!!! ;D
Название: Re: Настройка Sublime Text 2 как компилтяра для C
Отправлено: zanoni от Июня 04, 2014, 23:56:46
На ST 3, эти настройки подошли, только надо строку заменить на:
"cmd": ["gcc","-std=c99" ,"$file_name","-o", "${file_base_name}.exe", "-lm", "-Wall", "&","start", "${file_base_name}.exe"],(в ST это 12 строка) и тогда скомпилированный фаил запускается, даже если в пути к нему есть пробелы. Но программа компилируется и не автозапускается, нужно нажимать ctrl+shift+b... может кто знает, как сделать автозапуск после компиляции? Еще, при компиляции не выдаются варнинги, только ошибки, варнинги же, компилятор показывает, когда только запускаешь файл, через ctrl+shift+b.

UPD
Вот исправленный конфиг для компиляции, пока без автозапуска, но показывает варнинги во время компиляции:
{
   "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}", "-Wall"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c",
   "shell": true,
   "path": "D:\\Program\\MinGW\\bin\\",
   "variants":
  [
    {
      "name": "Run",
      "cmd": ["gcc","-std=c99" ,"$file_name","-o", "${file_base_name}.exe", "-lm", "-Wall", "&","start", "${file_base_name}.exe"],
      "shell": true
    }
  ]
}