运行 来自应用程序 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 知识。一步一个脚印。
我有一个使用我的库的应用程序。对于这两个项目,我都有单独的 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 知识。一步一个脚印。