1
我的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 += $(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
創建的庫stack.a
包括庫路徑。 我想將這個庫包含到我的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)
它完美的作品。
請幫助我如何包含此庫路徑,以便我不必在鏈接命令中提供庫的位置。
感謝geekosaur!在上面的makefile中,我已經按照你的建議重新命名了庫,並把庫存在program_LIBRARY_DIRS中的目錄位置放在那裏,然後工作正常。但是,當我將庫地址保存在program_LIBRARIES:= ../stack/libstack.a中時。這兩個-l和-L選項有什麼區別?如果我給program_LIBRARIES庫的絕對地址,那麼爲什麼它失敗..請說明...謝謝 – 2012-04-20 21:56:36
'program_LIBRARIES:= -lstack'是你應該如何使用它,如果你改名它,你添加了將'-L'路徑選項更正爲'program_LIBRARY_DIRS'。 – geekosaur 2012-04-20 21:59:58