2016-04-24 9 views
0

私は私の.Cプロジェクトをビルドし、実行可能ファイルを生成するmakefileを持っています。私はこれがターミナルからのコマンド./(NAME)を使用して実行できることを知っています。Cプログラムをビルドしているのと同じメイクファイルで実行できますか?

私の質問はこれです - 実際にビルドしてmakefile内で実行することができるので、ターミナルに 'make'と入力すればプログラムがビルドされ実行されますファイル&コマンド? (実行可能ファイルを手動で実行する必要はありません)。

感謝:)

+0

はい、可能です。 –

+0

はい、可能です。私はmakefileをよく知っているわけではありませんが、あなたの主な実行ファイルが 'test'と呼ばれるなら、あなたはできます:' test:$(CC)test.cpp -o test &&。/ test' – ForceBru

答えて

3

メークファイルですが、あなたがそのような何か何ができるか全くわから:

PROGARGS= 

.PHONY:all run 

all:prog 

#... 

run:all 
    ./prog $(PROGARGS) 
0

を限り、あなたが正しくあなたのメイクファイルの依存関係をシーケンスとして、実行しているからあなたを止めるものは何もありませんmakefileからCプログラムを起動します。つまり、ほとんどの人はmakefileがファイルをビルドするだけでなく、同時にmakefileを実行することも期待しています。

makeコマンドとrunコマンドをコマンドラインで1行で記述することをお勧めします。この方法では、一度Enterキーを押すだけで済みますが、makefile自体で何もする必要はありません。シェルは、履歴完了をサポートしている場合、あなたがビルドして実行したい次回は、再び、あなただけ...「UP」を押すと「ENTER」する必要が

make && ./NAME 

あなたが本当にメイクファイル内のすべてのものを入れたい場合は、 jdarthenayのanswerのように、makefileに別の "実行"ターゲットを作成して混乱の可能性を減らすことをお勧めします。

1

はい、可能です。例えば

TARGET=hoge 
CC=gcc 

.PHONY: compileandrun 
compileandrun: $(TARGET) 
    ./$(TARGET) 

$(TARGET): $(TARGET).c 
    $(CC) -o $(TARGET) $(TARGET).c 

あなたが書き込み可能な現在のディレクトリにこのMakefileとソースコードhoge.cを持っている場合は、プログラムがコンパイルされ、makeコマンドで実行されます。

1

他の回答は良好です。ただし、この他のバリアント(すばやく汚れたソリューション)を使用することができます。

あなたmakefileがあなたのプログラムを構築するために、このラインを持っていると仮定します。あなたは直接の下にあなたの実行中のコマンドを追加することができます

NAME: 
    gcc source.c -o NAME 

NAME: 
    gcc source.c -o NAME 
    ./NAME 

これは&&連結と同様の処理を行います。それが最初に実行されます成功した場合は、2番目のコマンドも。

関連する問題