构建用于发布和构建的c程序

构建用于发布和构建的c程序,c,makefile,C,Makefile,原始makefile用于发布构建 原创 APP:= deepstream-app TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -) NVDS_VERSION:=5.0 LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/ APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_V

原始makefile用于发布构建

原创

APP:= deepstream-app

TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -)

NVDS_VERSION:=5.0

LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/bin/

ifeq ($(TARGET_DEVICE),aarch64)
  CFLAGS:= -DPLATFORM_TEGRA
endif

SRCS:= $(wildcard *.c)
SRCS+= $(wildcard ../../apps-common/src/*.c)

INCS:= $(wildcard *.h)

PKGS:= gstreamer-1.0 gstreamer-video-1.0 x11

OBJS:= $(SRCS:.c=.o)

CFLAGS+= -I../../apps-common/includes -I../../../includes -DDS_VERSION_MINOR=0 -DDS_VERSION_MAJOR=5

LIBS+= -L$(LIB_INSTALL_DIR) -lnvdsgst_meta -lnvds_meta -lnvdsgst_helper -lnvdsgst_smartrecord -lnvds_utils -lm \
       -lgstrtspserver-1.0 -ldl -Wl,-rpath,$(LIB_INSTALL_DIR)

CFLAGS+= `pkg-config --cflags $(PKGS)`

LIBS+= `pkg-config --libs $(PKGS)`

all: $(APP)

%.o: %.c $(INCS) Makefile
    $(CC)  -c -o $@ $(CFLAGS) $<

$(APP): $(OBJS) Makefile
    $(CC) -o $(APP) $(OBJS) $(LIBS)

install: $(APP)
    cp -rv $(APP) $(APP_INSTALL_DIR)

clean:
    rm -rf $(OBJS) $(APP) 
APP:=deepstream应用程序
目标_设备=$(壳牌gcc-dumpmachine |切割-f1-d-)
NVDS_版本:=5.0
LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_版本)/LIB/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_版本)/bin/
ifeq($(目标设备),aarch64)
CFLAGS:=-dpplatform_TEGRA
恩迪夫
SRCS:=$(通配符*.c)
SRCS+=$(通配符.././apps-common/src/*.c)
INCS:=$(通配符*.h)
PKGS:=gstreamer-1.0 gstreamer-video-1.0 x11
OBJS:=$(SRCS:.c=.o)
CFLAGS+=-I.././apps common/includes-I../../../includes-DDS\u VERSION\u MINOR=0-DDS\u VERSION\u MAJOR=5
LIBS+=-L$(LIB_INSTALL_DIR)-lnvdsgst_meta-lnvds_meta-lnvdsgst_helper-lnvdsgst_智能记录-lnvds_utils-lm\
-lgstrtspserver-1.0-ldl-Wl,-rpath,$(LIB\u INSTALL\u DIR)
CFLAGS+=`pkg配置--CFLAGS$(PKGS)`
LIBS+=`pkg config--LIBS$(PKGS)`
全部:$(应用程序)
%.o:%.c$(增量)生成文件
$(CC)-c-o$@$(CFLAGS)$<
$(应用程序):$(OBJS)生成文件
$(CC)-o$(应用程序)$(OBJS)$(LIBS)
安装:$(应用程序)
cp-rv$(应用程序)$(应用程序安装目录)
清洁:
rm-rf$(OBJS)$(应用程序)
针对发布和调试进行了修改

APP:= deepstream-app
DEBUGAPP:= deepstream-app-debug

TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -)

NVDS_VERSION:=5.0

LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/bin/

ifeq ($(TARGET_DEVICE),aarch64)
  CFLAGS:= -DPLATFORM_TEGRA
endif

SRCS:= $(wildcard *.c)
SRCS+= $(wildcard ../../apps-common/src/*.c)

INCS:= $(wildcard *.h)

PKGS:= gstreamer-1.0 gstreamer-video-1.0 x11

OBJS:= $(SRCS:.c=.o)

CFLAGS+= -I../../apps-common/includes -I../../../includes -DDS_VERSION_MINOR=0 -DDS_VERSION_MAJOR=5

LIBS+= -L$(LIB_INSTALL_DIR) -lnvdsgst_meta -lnvds_meta -lnvdsgst_helper -lnvdsgst_smartrecord -lnvds_utils -lm \
       -lgstrtspserver-1.0 -ldl -Wl,-rpath,$(LIB_INSTALL_DIR)

CFLAGS+= `pkg-config --cflags $(PKGS)`

LIBS+= `pkg-config --libs $(PKGS)`

all: $(APP)

%.o: %.c $(INCS) Makefile
    $(CC)  -c -o $@ $(CFLAGS) $<
%.o: %.c $(INCS) Makefile
    $(CC) -g3  -c -o $@ $(CFLAGS) $<

$(APP): $(OBJS) Makefile
    $(CC) -o $(APP) $(OBJS) $(LIBS)
$(DEBUGAPP): $(OBJS) Makefile
    $(CC) -g3 -o $(DEBUGAPP) $(OBJS) $(LIBS)

install: $(APP)
    cp -rv $(APP) $(DEBUGAPP) $(APP_INSTALL_DIR)

clean:
    rm -rf $(OBJS) $(APP) $(DEBUGAPP)
APP:=deepstream应用程序
DEBUGAPP:=deepstream应用程序调试
目标_设备=$(壳牌gcc-dumpmachine |切割-f1-d-)
NVDS_版本:=5.0
LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_版本)/LIB/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_版本)/bin/
ifeq($(目标设备),aarch64)
CFLAGS:=-dpplatform_TEGRA
恩迪夫
SRCS:=$(通配符*.c)
SRCS+=$(通配符.././apps-common/src/*.c)
INCS:=$(通配符*.h)
PKGS:=gstreamer-1.0 gstreamer-video-1.0 x11
OBJS:=$(SRCS:.c=.o)
CFLAGS+=-I.././apps common/includes-I../../../includes-DDS\u VERSION\u MINOR=0-DDS\u VERSION\u MAJOR=5
LIBS+=-L$(LIB_INSTALL_DIR)-lnvdsgst_meta-lnvds_meta-lnvdsgst_helper-lnvdsgst_智能记录-lnvds_utils-lm\
-lgstrtspserver-1.0-ldl-Wl,-rpath,$(LIB\u INSTALL\u DIR)
CFLAGS+=`pkg配置--CFLAGS$(PKGS)`
LIBS+=`pkg config--LIBS$(PKGS)`
全部:$(应用程序)
%.o:%.c$(增量)生成文件
$(CC)-c-o$@$(CFLAGS)$<
%.o:%.c$(增量)生成文件
$(CC)-g3-c-o$@$(CFLAGS)$<
$(应用程序):$(OBJS)生成文件
$(CC)-o$(应用程序)$(OBJS)$(LIBS)
$(DEBUGAPP):$(OBJS)Makefile
$(CC)-g3-o$(DEBUGAPP)$(OBJS)$(LIBS)
安装:$(应用程序)
cp-rv$(应用程序)$(调试应用程序)$(应用程序安装目录)
清洁:
rm-rf$(OBJS)$(应用程序)$(调试应用程序)

但它不会生成deepstream应用程序调试。发布和调试时我应该更改什么?

您可以将
DEBUGAPP
添加到目标
all

# This belongs in the makefile:
all: $(APP) $(DEBUGAPP)
如果您调用
make
,这将同时生成
APP
DEBUGAPP
,就像您以前那样

但是,您可以将
make
任何目标作为参数,而无需进一步更改makefile:

# This is a command in your shell:
make deepstream-app-debug

all:$(APP)
默认目标仅生成发布版本。那么,您是否在调用期间明确告诉make构建调试版本?也就是说,您的
make
命令是什么?或者您可以修改默认目标以包含
DEBUGAPP
。如何包含DEBUGAPP?@kaylum如何在调用期间告诉make生成调试版本?关于:
%.o:%.c$(INCS)Makefile$(CC)-c-o$@$(CFLAGS)$<%.o:%.c$(INCS)Makefile$(CC)-g3-c-o$@$(CFLAGS)$为什么这个问题有“c++”和“c++17”标记?是的,它可以工作。谢谢我错过了所有:$(APP)$(DEBUGAPP)小错误:应该是
makedeepstreamappdebug
DEBUGAPP
是一个变量,不是可以直接创建的目标。