Como faço para escrever um script de shell para que, quando eu compilar meu programa c ++, ele coloque o binário no diretório binário?

0

Eu tenho um diretório chamado Binary e vários arquivos de origem:

./
├── Binary/
├── lesson02.cpp
├── lesson04.cpp
└── lesson06.cpp

quando eu compilo o código fonte

g++ lesson01.cpp -o lesson01

Eu quero que lesson01 seja colocado em Binary/

    
por Human 25.03.2015 / 18:29

1 resposta

2

Os scripts do shell são muito semelhantes aos comandos que você digita interativamente no shell. Nesse caso, a opção -o informará g++ onde colocar o binário. Então, basta dizer que você quer no diretório binário:

g++ lesson01.cpp -o Binary/lesson01

Você pode executar isso de forma interativa (digitando-o no shell) ou colocá-lo em um script de shell - ambos farão a mesma coisa:

#!/bin/sh
g++ lesson01.cpp -o Binary/lesson01

Normalmente, no entanto, você usaria um Makefile para fazer coisas como essa, não um shell script.

all:

Binary/%: %.cpp
    g++ -o "$@" "$<"  # Note: this must be a tab, not spaces. Make is annoying like that

você digitaria make Binary/lesson01 e Make compilaria o programa (se a fonte for mais recente que o binário existente ou se o binário não existir). Você também pode listar todos os programas depois que all: acima ( all: Binary/lesson01 Binary/lesson02 , etc.) e depois digitar make irá compilar todos os programas conforme necessário.

Você também pode fazer coisas mais avançadas com o Make ou um shell script (por exemplo, para determinar a lista de programas a serem compilados, em vez de listar todos eles), mas isso é um pouco mais complicado.

    
por 25.03.2015 / 18:44