下記のようなMakefile1を改良して、hoge.cppだけでなく同一ディレクトリにあるfuga.cppもコンパイルできるようにしようとMakefile2を書いてみたところ、
make: *** No rule to make target 'fuga.o', needed by 'fuga'. Stop.
という警告とともにストップしました。hoge.cppはコンパイルできていたのですが、fuga.cppのコンパイルで失敗してしまったようです。
どのようにすればfuga.cppもコンパイルできるようになりますか?ご教示のほどをよろしくお願い致します。
Allの部分はこちらのサイトを参考にしました。
また、ROOTFLAGSなどは単にコンパイルに必要なオプションの部分です。
Makefile1
1TARGET1 = hoge 2 3SRCS1 = $(TARGET1).cpp 4OBJS1 = $(TARGET1).o 5 6ROOTCFLAGS = $(shell root-config --cflags) 7ROOTLIBS = $(shell root-config --libs) 8ROOTGLIBS = $(shell root-config --glibs) 9 10CPPFLAGS = $(ROOTCFLAGS) -Wall -fPIC 11CPPLIBS = $(ROOTLIBS) -lSpectrum 12CPP = g++ 13 14$(TARGET1): $(OBJS1) 15 $(CPP) $(CPPFLAGS) $(CPPLIBS) $(OBJS1) -o $@ 16 17.cpp.o: 18 $(CPP) $(CPPFLAGS) -c $< 19 20clean: 21 rm -rf $(TARGET1) 22
Makefile2
1TARGET1 = hoge 2TARGET2 = fuga 3 4SRCS1 = $(TARGET1).cpp 5OBJS1 = $(TARGET1).o 6SRCS2 = $(TARGET2).cpp 7OBJS2 = $(TARGET2).o 8 9ROOTCFLAGS = $(shell root-config --cflags) 10ROOTLIBS = $(shell root-config --libs) 11ROOTGLIBS = $(shell root-config --glibs) 12 13CPPFLAGS = $(ROOTCFLAGS) -Wall -fPIC 14CPPLIBS = $(ROOTLIBS) -lSpectrum 15CPP = g++ 16 17All: $(TARGET1) $(TARGET2) 18$(TARGET1): $(OBJS1) 19 $(CPP) $(CPPFLAGS) $(CPPLIBS) $(OBJS1) -o $@ 20$(TARGET2): $(OBJS2) 21 $(CPP) $(CPPFLAGS) $(CPPLIBS) $(OBJS2) -o $@ 22 23.cpp.o: 24 $(CPP) $(CPPFLAGS) -c $< 25 26clean: 27 rm -rf $(TARGET1) 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 14:49