这是在生成文件中包含子目录的正确方法吗?

Is this the right way to include a subdir in a makefile

本文关键字:方法 子目录 包含 文件      更新时间:2023-10-16
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

首先,-l选项(小写 L(用于与库链接,-L用于将路径添加到链接器库搜索路径列表。

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

您还可以跳过-L-l选项,而是提供库的完整路径。