2013-11-15 10 views
6

Мой вопрос прост: есть ли способ скомпилировать и запустить код C++ с терминала в Linux в одной строке?Компиляция и запуск кода на C++ с одной командой в Linux

+0

См http://stackoverflow.com/questions/ 18419973/bash-scripts-to-compile-and-run-c – usr2564301

+0

'make execute', предполагая, что вы внесете соответствующие изменения в свой файл makefile. –

ответ

9
g++ myfile.cpp -o myfile && ./myfile 
+1

Не совсем одна команда. –

+0

@JohnDibling ОП задает «одну строку», а также «одну команду» в вопросе. – JBentley

+0

OP запросил _one line_, а не _ one command_ (последний даже не имеет смысла в терминах 'shell': технически вышеприведенная команда по-прежнему является одной командой) –

5

Да. Если предположить, что C++ программа кодируется в один файл с именем foo.cpp:

g++ foo.cpp -o foo && ./foo 

Замечание: & & означает: выполнить команду на право, только если команда на левом удалось

+0

+1 за то же самое и «make && ./foo», если программа не находится в одном файле (и вам нужен make-файл) – Zac

+0

Makefiles не обязательно должны быть реальными файлами - они могут прибыть через stdin и bash здесь строки. http://stackoverflow.com/a/20006901/2113226 –

2

Это больше проблемы с shell-scripting, чем вопрос на C++. В большинстве оболочек существует множество способов цепочки команд. Предполагая, что вы используете bash (попробуйте echo $SHELL, чтобы убедиться), взгляните на хороший bash tutorial.

4

Попробуйте этот хак:

Палка эта линия на верхней части файла CPP:

//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";g++ -o "$x" "$0")&&exec "$x" "[email protected]" 

Затем добавить разрешение на выполнение файла CPP, т.е. (chmod +x foo.cpp), то:

./foo.cpp 
+2

Ужасное, хотя и интересное (следовательно, +1) решение! Это также не совсем удовлетворяет вопрос OP, так как он требует нескольких команд при создании любого .cpp-файла. – JBentley

+0

@JBentley, хе-хе, он не предназначен для правильного использования, но он полезен для небольших фрагментов тестов ... О командах, это расщепление волос ...;) – Nim

-2

В одной строке: да; см. другие ответы.

В одной команде: нет.

+0

см. Http://stackoverflow.com/a/20006901/ 2113226 как сделать это в одной команде –

+0

@DigitalTrauma Это умная да, но не буквально одна команда. – user1074069

2

Под «одной командой» я предполагаю, что OP означает вызов только одного двоичного файла из командной строки.

В одной строке: да; см. другие ответы.

В одной команде: уверен - вы можете воспользоваться некоторыми неявных правил, и пихать в своем собственном правило выполнения через Баш здесь строку:

$ ls hello* *ake* 
ls: cannot access *ake*: No such file or directory 
hello.c 
$ cat hello.c 
#include <stdio.h> 
int main (int argc, char **argv) { 
    printf("%s %s\n", "hello", "world"); 
    return (0); 
} 
$ make hello.run -f - <<< 'hello.run: hello; ./$<' 
cc  hello.c -o hello 
./hello 
hello world 
$ 
Смежные вопросы