como compilar e executar um arquivo cpp usando apenas um comando no linux?

5

Recentemente eu comecei a aprender a linguagem cpp no linux, e agora eu executo um arquivo cpp usando os seguintes comandos.

g++ -o xxx xxx.cpp
./xxx

Existe uma maneira de torná-lo um comando de linha como compile-and-run xxx.cpp ? Obrigado.

    
por SpawnST 24.06.2010 / 08:21

5 respostas

6

Jeremy Banks postou um dos mais incríveis truques Eu já vi em algum tempo no SO. Basicamente, ele está adicionando uma única linha Bash-Script na parte superior do arquivo cpp , que permite a ele diretamente compilar e executar esse arquivo .

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

Esta explicação é copiada da essência:

//

Since we don't want this visible in C, we put it in a comment.

&>/dev/null

Unfortunately // is interpreted as an invalid shell command and produces an error message, so we need to redirect that to /dev/null to get rid of it.

;x="${0%.*}"

This determines what our compiled filename will be by using string replacement to get rid of any extensions on the current filename.

;[ ! "$x" -ot "$0" ]||

This check if there already is a compiled version newer than the source file. If not...

(rm -f "$x";cc -o "$x" "$0")

...we delete any existing version and then compile our code, using our chosen compiled filename.

&&exec "$x" "$@"

If the compile was successful or unnecessary, pass execution to the compiled code, passing on the arguments given to this script.

Esta técnica é chamada de um Polyglot , o que significa que está escrito em vários idiomas e também pode ser interpretado por esses intérpretes de linguagem sem problemas.

    
por 24.06.2010 / 09:02
6

Que tal isso?
g++ -o xxx xxx.cpp && ./xxx ?
( && significa que ele vai esperar até que a primeira tarefa seja concluída, & significa que ela será iniciada logo após iniciar a primeira, você NÃO deseja essa.)

    
por 24.06.2010 / 08:24
3

Crie um Makefile assim:

xxx: xxx.cpp
    g++ -o xxx xxx.cpp

run: xxx
   ./xxx

Em seguida, basta digitar make run . Claro que o seu Makefile pode ser muito mais elaborado do que isso, é apenas um exemplo simples. O importante é a cláusula "run".

    
por 24.06.2010 / 08:56
3

um makefile simples e genérico pode fazer isso:

$ cat Makefile  
.SUFFIXES: .o .c  

.c:   
        cc -o $@ $<  
        ./$@  
$ make myprogram  

irá compilar meu programa.c e irá executar meu programa. Como é definido com regras padrão, isso funciona para todos os arquivos .c nesse diretório.

Naturalmente, você deve se preocupar com bibliotecas, incluir diretórios e outras dependências ...

Espero que isso ajude, no entanto

    
por 24.06.2010 / 09:08
1

você pode escrever um script. como:

#!/bin/bash

g++ -o $1 $1.cpp
./$1

, em seguida, torne-o execupable chmod u+x script.sh e chame-o como script.sh yourcode (omita o cpp ou altera o script).

    
por 24.06.2010 / 08:58