在makefile中包含库路径

在makefile中包含库路径,makefile,Makefile,我的makefile如下所示 program_NAME := myprogram program_C_SRCS := $(wildcard *.cc) program_C_OBJS := ${program_C_SRCS:.cc=.o} program_OBJS := $(program_C_OBJS) program_INCLUDE_DIRS := ../INCLUDE program_LIBRARY_DIRS := program_LIBRARIES := CPPFLAGS += $(f

我的makefile如下所示

program_NAME := myprogram
program_C_SRCS := $(wildcard *.cc)
program_C_OBJS := ${program_C_SRCS:.cc=.o}
program_OBJS := $(program_C_OBJS) 
program_INCLUDE_DIRS := ../INCLUDE
program_LIBRARY_DIRS := 
program_LIBRARIES :=
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))

.PHONY: all clean distclean

all: $(program_NAME)

$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)

clean:
    @- $(RM) $(program_NAME)
    @- $(RM) $(program_OBJS)

distclean: clean
我已经在某个路径
/home/Desktop/kk/stack
中创建了一个库
堆栈。
我想将这个库包含到我的makefile中,以便在链接过程中从该路径获取它

我试图给出:

program_LIBRARY_DIRS := /home/Desktop/kk/stack
在连接步骤中,我给出:

$(LINK.cc) $(program_OBJS) stack.a -o $(program_NAME)
但是makefile无法从前面提到的路径提取库

相反,如果我直接给出:

$(LINK.cc) $(program_OBJS) /home/Desktop/kk/stack/stack.a -o $(program_NAME)
它工作得很好


请帮助我如何包含此库路径,以便我不必在link命令中给出库的位置。

对于某些字符串
X
-L
链接选项仅适用于名为
libX.a
libX.so
并使用
-lX
链接的库。您需要将
stack.a
重命名为
libstack.a
,并在link命令中将其称为
-lstack


(理想情况下,您还应该将其放在
程序库
定义中,并在
$(LINK.cc)
行中使用。)

谢谢geekosaur!!!在上面的makefile中,我已经按照您的建议重命名了库,并将该库所在的目录位置放置在program_library_DIRS中,然后它就可以正常工作了。但是当我在程序库中保留库地址时:=../stack/libstack.a。这两个-l和-l选项之间有什么区别?如果我在程序库中给出了库的绝对地址,那么它为什么会失败。请澄清…谢谢
程序库:=-lstack
是您应该如何使用它的,如果您重命名了它,并在
程序库目录中添加了正确的
-L
路径选项。