私はいくつかのアプリケーションがあるプロジェクトを始めています。これらのアプリケーションは、ソースファイルに関していくつかの共通の機能を共有しています。各アプリケーションには独自のmakeファイルが必要ですが、共通の場所からこれらの共有ソースファイルにリンクできる必要があります。
これを説明するために、これが私のディレクトリレイアウトです:
project/
lib/
shared1/
shared1.c
shared1.h
shared2/
shared2.c
shared2.h
app1/
app1.c
app1.h
makefile
app2/
app2.c
app2.h
makefile
現在、makefileの1つは次のようになっています。
CC=gcc
XXXCFLAGS=-Wall -Wextra -pedantic -I../../lib/shared1
CFLAGS=-I. $(XXXCFLAGS)
DEPS = app2.h ../../lib/shared1/shared1.h
OBJ = ${DEPS:.h=.o}
LIBS=-lpthread
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
app2: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
これは、共有ソースの管理を行うためのほぼ正しい方法ですか、それともより良い方法がありますか。それらは別々にコンパイルされたライブラリである必要がありますか?もしそうなら、どのように?
このような相対パスは大丈夫ですか?
このようなものにautotoolsを使用する必要がありますか?例を見た後、共有コードまたはライブラリをリンクする方法がわかりませんでした。
どんなガイダンスでも大歓迎です。