クラスAを提供するAaというライブラリを作成しようとしています。このライブラリは、クラスBとCに依存し、すべてそれぞれのファイル(.cpp
と.hpp
)にあります。私は通常、すべてのコードを手動でコンパイルしましたが、ファイルの数が増えるにつれて、makefileを使用したいと思いました。基本的に、私がすることは次のとおりでした:
g++ -c A.cpp
g++ -c B.cpp
g++ -c C.cpp
ar rvs A.a *.o
これを行うmakefileを作成するにはどうすればよいですか?makefilesは呼び出すことさえできますar
か?
これは私が試したものです:
CC=g++
CFLAGS=-c -Wall
objects=C.o B.o
all : A.o $(objects) #Creates the library called A.a.
:ar rvs A.a A.o $(objects)
A.o : $(objects) A.hpp A.cpp
:$(CC) $(CFLAGS) A.cpp
B.o : B.hpp B.cpp
:$(CC) $(CFLAGS) B.cpp
C.o : C.hpp C.cpp
:$(CC) $(CFLAGS) C.cpp
しかし、私のar rvs A.a A.o $(objects)
命令は実行されていないようです。このmakefileはすべての正しい.o
ファイルを生成しますが、それらをアーカイブしません。