我正在启动一个具有多个应用程序的项目。这些应用程序在源文件方面共享一些通用功能。每个应用程序都应该有自己的 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 看起来有点像这样:
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)
这是管理共享源的大致正确方法,还是有更好的方法。它们应该是单独编译的库吗?如果是这样,怎么做?
这样的相对路径可以吗?
我应该使用自动工具来做这样的事情吗?查看示例后,我看不到如何链接共享代码或库。
非常感谢任何指导。