私はメイクファイルが初めてで、それらは私を困惑させます。次のフォルダー階層があります。
という名前のフォルダーには、 (with file ) と(with file ) の 2 つのフォルダーがlib
含まれています。また、何らかの理由でエラーが発生する Makefile も含まれています。include
mylib.h
src
mylib.cpp
完全なメイクファイルは次のとおりです。
CFLAGS = -Wall -fPIC
OBJECTS = mylib.o
all: libmine.so
libmine.so: $(OBJECTS)
g++ -shared $(CFLAGS) \
-o libmine.so \
$(OBJECTS)
%.o: src/%.cpp include/%.h
g++ $(CFLAGS) \
-I include \
-o %.o \
-c src/%.cpp
clean:
rm src/*.o
rm libmine.so
エラーは
mr209@Quantum:~/Desktop/hw1/lib$ make
g++ -Wall -fPIC \
-I include \
-o %.o \
-c src/%.cpp
g++: error: src/%.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
make: *** [mylib.o] Error 4
しかし、ファイルは存在します。したがって、make
奇妙なことをしているため、.cpp
ファイルを見つけることができません。
を作成するlibmine.so
には、を使用g++
して何かを行う必要があります。mylib.o
一般的な.o
ファイルについては、数行のコードを記述しました。
これが私が考えていたことです: を作るためにはlibmine.so
、 でg++
何かをしなければなりませんmylib.o
。したがって、 ではlib
、 という名前のファイルmylib.o
が表示される必要があります。一般的な%.0
ルールを使用すると、このファイルはmylib.cpp
insrc
とmylib.h
inから作成されますinclude
(したがって、%.o
ルールの最初の行)。ファイルは を使用して作成され、追加のヘッダーg++
を検索する必要があり、出力として生成され、コンパイルされますが、ファイルが生成されることが保証されます。include
mylib.o
src/mylib.cpp
-c
.o
明らかに、何かがうまくいかず、何が原因かわかりません。Makefile とは何か、なぜ Makefile の扱い方を学ばなければならないのかを知ったのはほんの 2 日前のことなので、私はそれほど専門家ではありません。