这是在makefile中包含subdir的正确方法

时间:2017-03-18 06:52:08

标签: c++ makefile subdirectory lib

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@

CFLAGS  = -pipe -O2 -g `freetype-config --cflags` -c -Wall -Wno-multichar `cat @top_srcdir@/madlax.specs` 
CPPFLAGS= $(CFLAGS) -Woverloaded-virtual -Wnon-virtual-dtor

CC      = @CC@
EXE = jpegtranslator
MLXLIBDIR = @top_srcdir@/src/kits/objs

SUBDIR = libjpeg
SRC := $(SUBDIR)/jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jcdiffct.c \
jchuff.c jcinit.c jclhuff.c jclossls.c jclossy.c jcmainct.c jcmarker.c jcmaster.c jcodec.c \
jcomapi.c jcparam.c jcphuff.c jcpred.c jcprepct.c jcsample.c jcscale.c jcshuff.c jctrans.c \
jdapimin.c jdapistd.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jddiffct.c jdhuff.c \
jdinput.c jdlhuff.c jdlossls.c jdlossy.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
jdpostct.c jdpred.c jdsample.c jdscale.c jdshuff.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jmemmgr.c jmemnobs.c jquant1.c jquant2.c \
jutils.c

OBJS =  be_jdatadst.o be_jdatasrc.o be_jerror.o JPEGTranslator.o $(SRC)
OBJDIR := objs

include @top_srcdir@/makefile.rules

all :   $(OBJDIR) $(OBJDIR)/$(EXE)

$(OBJDIR):
    mkdir $(OBJDIR) -C $(SUBDIR)

关注的主要部分是$(OBJDIR)-C $(SUBDIR),因为我不知道我是否还需要-I $(SUBDIR)或-L $(SUBDIR),或者如果我只使用-ljpeg

1 个答案:

答案 0 :(得分:0)

首先,-l选项(小写L)用于链接库,-L用于添加链接库-search-path-list的路径。

如果您想使用-L链接到非标准位置的库,则需要-l

可以同时跳过-L-l选项,并提供该库的完整路径。