
というディレクトリBinary
と複数のソースファイルがあります。
./
├── Binary/
├── lesson02.cpp
├── lesson04.cpp
└── lesson06.cpp
ソースコードをコンパイルするとき
g++ lesson01.cpp -o lesson01
私はlesson01
に掲示されたいBinary/
答え1
シェルスクリプトは、シェルに対話的に入力するコマンドと非常によく似ています。この場合、この-o
オプションはg++
バイナリを配置する場所を示します。したがって、バイナリディレクトリに保存したいと言えばいいのです。
g++ lesson01.cpp -o Binary/lesson01
対話的に実行するか(シェルに入力して)、シェルスクリプトに入れることができます。どちらも同じことを行います。
#!/bin/sh
g++ lesson01.cpp -o Binary/lesson01
しかし、通常、これらのタスクを実行するには、シェルスクリプトの代わりにMakefileを使用します。
all:
Binary/%: %.cpp
g++ -o "$@" "$<" # Note: this must be a tab, not spaces. Make is annoying like that
次に、と入力するとmake Binary/lesson01
Makeはプログラムをコンパイルします(ソースコードが既存のバイナリよりも最新の場合、またはバイナリが存在しない場合)。また、上部にall:
後ろのすべてのプログラム(など)をリストし、必要に応じてそのプログラムをすべてコンパイルするように入力することもできます。all: Binary/lesson01 Binary/lesson02
make
Makeまたはシェルスクリプトを使用して高度な操作を実行することもできます(たとえば、すべてのプログラムをリストするのではなく、コンパイルするプログラムのリストを決定するようにします)、これはもう少し複雑です。