私は、markovアルゴリズムの3つの異なる実装を一度にコンパイルして実行するMakefileを作成しようとしています。私はmakefilesに新しいので、複数の間違いがある場合は、私に知らせてください。また、コンパイル時に-O3を使用して最適化したいのであれば、どこでそれを行うのでしょうか?私は実行するとC、C++、Javaファイルを一度にコンパイルするmakefileの作成方法
は、私は現在、これらのエラーを取得:
のMakefile:28:警告:ターゲット `markov.o」のコマンドをオーバーライド
のMakefile:22:警告:ターゲットの古いコマンドを無視`markov.o '
make:*ターゲットを作るルールはありません
Markov.java', needed by
java_markov.class'。やめる。ここで
私のメイクのためのコードです:
javaC=javac
javaR=java
CC=g++
CC=gcc
CFLAGS=-O0
OPT=-deprecation
TARGET1=./java_markov
TARGET2=./markov_cpp
TARGET3=./markov_c
INFILE=./alice30.txt
OUTFILE1=./markov_java_out.txt
OUTFILE2=./output/markov_cpp_out.txt
OUTFILE3=./output/markov_c_out.txt
$(TARGET1).class: Markov.java
$(javaC) Markov.java
$(TARGET2): markov.o
$(CC) $(CFLAGS) -o $(TARGET2) markov.o
markov.o: markov.cpp
$(CC) $(CFLAGS) -c markov.cpp
$(TARGET3) : markov.o eprintf.o
$(CC) $(CFLAGS) -o $(TARGET3) markov.o eprintf.o
markov.o : markov.c
$(CC) $(CFLAGS) -c markov.c
eprintf.o : eprintf.c eprintf.h
$(CC) $(CFLAGS) -c eprintf.c
clean:
rm -f *.class $(OUTFILE1)
rm -f *.o $(TARGET2) $(OUTFILE2)
rm -f *.o $(TARGET3) $(OUTFILE3)
run: $(TARGET1).class
$(javaR) $(TARGET1) < $(INFILE) > $(OUTFILE1)
$(TARGET2)
$(TARGET2) <$(INFILE) >$(OUTFILE2)
$(TARGET3)
$(TARGET3) < $(INFILE) > $(OUTFILE3)
4行目では、g ++(GNUコンパイラコレクション)をg ++に設定した後、これを4行目に設定します。 .cppファイルでgccを使用している私のコンピュータでは、Cコンパイラの実行が終了するため、動作しません。 .cppソースでgcc用に1つの変数を使用し、.cppソースでg ++用にもう1つの変数を使用してみてください – Pete
なぜmakeファイルでなければなりませんか? CとC++バージョン用のmakeファイルを作成し、シェルやPythonスクリプトで実行します。 – Falmarri