运行 来自应用程序 makefile 的库 makefile

Running library makefile from application makefile

我有一个使用我的库的应用程序。对于这两个项目,我都有单独的 makefile

我的应用程序(源代码 + Makefile)在 'client' 文件夹中。在同一级别我有库文件夹 'mylib'.

客户端应用程序的 make 文件如下所示:

LIBS = -L../mylib -lmy
CFLAGS = -Wall -W -I../mylib

TARGET   = clientapp
SOURCEDIR = .
SOURCES = $(wildcard $(SOURCEDIR)/*.c)
OBJECTS = $(SOURCES:.c=.o)

all: $(TARGET)
$(TARGET): $(OBJECTS)
    $(CXX) $(CFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(LDFLAGS) -Wl,-rpath=../mylib
clean:
    rm -f $(OBJECTS) $(TARGET)

目前要使一切正常,我需要先转到库文件夹,在那里调用 make,然后转到客户端应用程序文件夹并在这里调用 make。

我想要做的是 运行 客户端应用程序的 makefile 中的所有内容。 我发现我需要使用'recursive make'。 但我不能让它构建一切。唯一的图书馆建好了。

正确的语法是什么?

虽然从长远来看递归 make 并不是最好的解决方案 运行,但如果您刚刚起步,它是一个可行的选择。

在顶层你只需要创建一个新的 Makefile 只执行你现有的两个 makefile

.PHONY: all
all:
    $(MAKE) -C mylib
    $(MAKE) -C source

(显然缩进应该是制表符)

这将在各自的目录中执行两个 makefile。

最好包含makefile 并且是非递归的,但这需要更多的make 知识。一步一个脚印。