1 (изменено: sabir.yanin2014, 2018-01-03 20:22:21)

Тема: AHK:Командная строка. Скрипт для запуска компилятора С++

С новым годом! Начал изучать С++. Visual Studio отпугнула меня своей громоздкостью так как мне нравится минимализм. Мне понравилось писать код в Notepad++, а компилировать его через MinGW:gcc. Постоянно приходится запускать командную строку и это немного утомляет.
Я решил написать скрипт который будет мне помогать выполнять типовые действия:ввод имени,запуск командной строки,запуск команды на компиляцию. Раньше как то не сталкивался с командной строкой и испытываю некоторые затруднения. Так команда  ControlSend не хотела выводить "g++" а выводила "g" то есть плюсы "съедает". Тогда я попробовал использовать опцию {Raw}. Вроде стало получше но через раз ошибки появляются: если вбить русское имя файла почему то выводит "g=+" а иногда нормально "g++". С английскими именами тоже что-то не ладно заглавные буквы неправильно выводятся: вместо "Qwerty" выводит "qWerty".


InputBox, Name, Выбор файла для компиляции,
(
Выбранный файл *.cpp(С++) будет скомпилирован 
в исполняемый файл *.exe
Имя нужно вводить без расширения!
Введите имя файла:
)
str:="g++ " . Name . ".cpp"
Run, %comspec%
sleep 100  
ControlSend,,{Raw}%str%, Администратор: C:\Windows\system32\cmd.exe

Вопрос такой можно всей этой пляски с бубном избежать и выдавать команду непосредственно в командную строку без "Sendов"?

Post's attachments

2018-01-03_18-42-28.png 922.51 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

sabir.yanin2014 пишет:

Visual Studio отпугнула

CodeBlocks.

sabir.yanin2014 пишет:

Notepad++

NppExec.

NPP_SAVE
"g++" "$(FULL_CURRENT_PATH)"

3 (изменено: sabir.yanin2014, 2018-01-03 22:08:42)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

stealzy, сложно как то. Зачем мне менять шило на мыло? Мой то вопрос вроде элементарный как правильно послать команду в командную строку (и некоторого успеха я достиг) а в ответ мне предлагают вступить в партию:). Ну не хочу я никакую среду. Если можно и без нее работать. Я пробовал DEV C++ а потом MinGW:gcc, на втором и остановился потому что скомпилированные файлы получаются меньше- для меня это показатель: меньше значит лучше! Второй костыль еще "лучше" NppExec, какой то батник нужно писать.  Нельзя ли мне помочь с моим кодом? Так или иначе я его заставлю работать, просто хотелось получить красивый код. Так как то нельзя?

 Run, %ComSpec% /c "g++.exe" /c %Name%

4

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

А если командой Run запустить всю команду сразу? Обязательно, чтобы появлялось окно командной строки и в нём возникали буковки?

5 (изменено: sabir.yanin2014, 2018-01-03 22:13:53)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

ypppu, желательно без "буковок". Команду как правильно написать? Типа так:

Run, %ComSpec% /c "g++.exe" /c %Name%

Я не знаю синтаксис и правила написания командной строки.

6 (изменено: sabir.yanin2014, 2018-01-04 04:35:59)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Так работает с переменным успехом:


InputBox, Name, Выбор файла для компиляции,
(
Выбранный файл *.cpp(С++) будет скомпилирован 
в исполняемый файл *.exe
Имя нужно вводить без расширения!
Введите имя файла:
)
str:=" " . Name . ".cpp"
Run, %comspec%
sleep 100  
ControlSend,,{Raw}g++ , Администратор: C:\Windows\system32\cmd.exe
sleep 100 
ControlSend,,%str%, Администратор: C:\Windows\system32\cmd.exe
sleep 500 
ControlSend,, {Enter}, Администратор: C:\Windows\system32\cmd.exe

А через Run можно это сделать?

7 (изменено: stealzy, 2018-01-03 22:49:57)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

sabir.yanin2014 пишет:

какой то батник нужно писать

Что за чушь, какой еще батник?
Я привел весь код, жмете F6 и вставляете его, он запомнится.
Костыли это вы тут создаете, причем о таких диких я даже не слыхал. Все нормальные люди запускают код из редакторов-IDE средствами самих этих программ и плагинов к ним.

sabir.yanin2014 пишет:

Я пробовал DEV C++ а потом MinGW:gcc

Компилятор можно поменять в настройках любой IDE, если вы понимаете о чем я.

8

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

stealzy, извините благодарю за помощь.

9 (изменено: stealzy, 2018-01-03 23:07:58)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Ничего, попозжа поймете.
На самом деле плагин я ставил только чтобы видеть результат исполнения (stdout) в панели редактора и чтобы автоматически сохранялся файл перед запуском,
можно и без плагина:
http://azjio.narod.ru/NppHelp/Commands.html

10 (изменено: sabir.yanin2014, 2018-01-04 04:28:25)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Все таки я добился своего. Сделал "GCC-менеджер". Задача стояла сделать универсальный скрипт чтобы можно было использовать русские слова в названиях проекта. В Notepad++ я выставил в настройках  нового документа кодировку OEM 866-что позволяет использовать русский язык в С++. Решил создавать временные батники которые запускались скриптом а после выполнения задачи уничтожались автоматически. Намучился с крокозябрами так как батник тоже кодируется в OEM-866 пока не додумался в настройках скрипта выставить оную кодировку. В целом мне пока на первое время хватит, нужды в IDE среде пока не вижу.


FileEncoding , CP866
InputBox, Name, Выбор файла для компиляции,
(
Выбранный файл *.cpp(С++) будет скомпилирован 
в исполняемый файл *.exe
Имя нужно вводить без расширения!
Введите имя файла:
)
Rec:="g++ " . Name . ".cpp`n"
FileAppend, %Rec%, %A_WorkingDir%\%Name%.cmd
Run, %Name%.cmd
while !F{  
IfExist, a.exe
F:=1
sleep 100
}
FileDelete, %A_WorkingDir%\%Name%.cmd
FileMove, %A_WorkingDir%\a.exe, %A_WorkingDir%\%Name%.exe
SoundPlay, *64

Приятным бонусом оказалось что скомпилированный файл образуется в той же папке где и исходник.

11 (изменено: stealzy, 2018-01-04 03:57:15)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

sabir.yanin2014 пишет:

добился своего

Оно и видно. Чтобы передать компилятору файл в параметре, вы запускаете ahk скрипт, потом ручками печатаете имя файла, скрипт создает временный батник, который уже запускает компилятор.
Интересно запуск скомпилированного у вас устроен настолько же оригинально? Запускаете другой ahk скрипт, печатаете имя файла для запуска, затем скрипт создает временный батник, который создает... Желаю дальнейших успехов !

Я все таки предпочитаю пока делать это одной кнопкой из Np++. Заодно сохраняя файл кода перед компиляцией, запуская скомпилированный ехе и прямо в появляющейся панели редактора видя вывод exe.

12

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

stealzy, я то может и не против одной кнопкой как вы лихо управляться. Но чего то не могу команду в блокнот ввести. Если вам не трудно пришлите образец. В ссылке что вы прислали написано много но про запуск компилятора из Notepad++ я не увидел.

13

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

sabir.yanin2014, я не совсем понимаю, что вы хотите добиться, но если вам необходимо stdout одной команды перенаправить в stdin другой, то это делается через pipe - "|".

14

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Плагины → Plugin manager → NppExec → установить. (Плагины → NppExec → Запустить.. / Execute..) / F6 → Вводите команду:

npp_save
g++ "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
"$(CURRENT_DIRECTORY)\$(NAME_PART).exe"

Запуск последней команды сразу - Ctrl+F6. По желанию - Save → GCC compile & run.
Хотите видеть результат в отдельном окне консоли - добавьте npp_run.

15

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

stealzy, очень удобно спасибо. Других альтернатив не нашел - чтобы русский язык принимал.

16

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

А так разве не работает?

type test10.cpp | g++ -o test10.exe -x c++ -

17 (изменено: sabir.yanin2014, 2018-01-05 19:09:32)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Malcev, не понимаю как это применить.

type test10.cpp | g++ -o test10.exe -x c++ -

Это в командную строку? Или в Notepad++ или в AHK? Просветите может?

18

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

В командную строку.

19 (изменено: sabir.yanin2014, 2018-01-05 21:38:49)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Malcev, вы имеете ввиду что как то можно прикрепить к моему:


Run, %ComSpec% ; AHK

Ваше:


type test10.cpp | g++ -o test10.exe -x c++ -

?
И что такое "type"? Если не трудно поясните, а то для меня сложно: "-o" и это: "-x" и вот это: "c++ -" по отдельности понять, а тем более в одно целое собрать.

20

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Type - вывод содержимого файла, которое потом с помощью пайпа | мы передаем g++.
Остальное это коммандный синтаксис g++.
-o имя выходного файла;
-x язык;
- имя входного файла (берется входящий поток).

21 (изменено: sabir.yanin2014, 2018-01-06 20:00:58)

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Malcev, а можно это передать c помощью AHK через команду Run?

22

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

Методом научного тыка добился реализации через AHK. Вот так компилирует в файл по умолчанию в a.exe:


Run, %comspec% /c g++ test10.cpp

A вот так по методу Malcev с наследованием имени:


Run, %comspec% /c type test10.cpp | g++ -o test10.exe -x c++ -

Без вот этой вставки /c не работало, что это за параметр?

23

Re: AHK:Командная строка. Скрипт для запуска компилятора С++

sabir.yanin2014 пишет:

Без вот этой вставки /c не работало, что это за параметр?

В командной строке введите "cmd /?", там будут все параметры.