【发布时间】:2020-12-24 09:44:06
【问题描述】:
我有一个使用我的库的应用程序。对于这两个项目,我都有单独的生成文件
我的应用程序(源代码 + Makefile)位于“客户端”文件夹中。在同一级别,我有库文件夹“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'。 但我不能让它建立一切。唯一的库已构建。
什么是正确的语法?
【问题讨论】:
-
如果您需要帮助,您必须向我们展示您是如何调用子制作的。拥有客户端 makefile 很有用,但如果没有递归调用,我们真的不能说太多。另外,请提供更详细的问题说明。
-
不要。如果您有库,请安装它。然后在您的客户端 makefile 中,链接到已安装的库。
-
@WilliamPursell 这不是第 3 方库。我不想安装它
-
@amplifier 如果您不想安装它,请停止将其称为库。如果它是一个库,请将其视为一个独特的项目。如果您希望它成为一个项目的组件,请不要将其称为库。
标签: c ubuntu gcc makefile gnu-make