Русское сообщество Sublime Text
Основной раздел => Вопросы и ответы => Тема начата: 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}'"]
}
]
}
-
Когда компилил под Windows, вроде бы проблем не было. Нагуглил такое решение:
Заменить строку в файле exec.py
proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
на
os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())
-
Когда компилил под 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: В переменные среды я никаких изменений не вносил! Читал где-то что нужно. Стоит ли?
-
Добавить в переменную PATH путь до твоего g++.
Пуск > Компьютер > Свойства > Дополнительные параметры > Параметры среды
Переменная path > изменить > в конец дописать ;c:\MinGW\bin (или ту директорию, в которую у тебя установлен MinGW).
-
Добавить в переменную 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 сразу-же запускался?
-
Никто не знает как запустить откомпилированный файл после завершения компиляции? :(
-
Даблклик? ;)
-
Даблклик? ;)
ахахах))) подъ*бал))))))))))
имеется в виду что-бы сразу после нажатия Ctrl+b происходила компиляция и открывался откомпилированый *.exe )))
-
Ну так как?)))
-
Компиляция и запуск должны происходить командой 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 // Добавить.
}
]
}
-
Я очень извиняюсь, но не мог-бы ты исправить мои 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\\"
}
-
я сделал вот так:
{
"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)
-
но мой файл не запускается...просто командная строка и всё
-
С настройками, вроде, все правильно.
Такой косяк получается, если в пути до файла есть пробелы.
-
С настройками, вроде, все правильно.
Такой косяк получается, если в пути до файла есть пробелы.
и что с этим делать?((
-
а то что пробелы в названии папки это ничего?
-
Я говорю, что по дороге до папки с проектом не должно быть пробелов.
Переложи файлы в папку с названием, например, c:\dev
-
Я говорю, что по дороге до папки с проектом не должно быть пробелов.
Переложи файлы в папку с названием, например, c:\dev
Громадное СПАСИБИЩЕЕ!!!!! ;D
-
На 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
}
]
}