0

我正在开发一个由多个 c 和 c++ 代码文件组成的项目。我没有编写代码,我只是重新格式化它的结构。我正在使用 Visual Studio 代码来编辑我的代码。

当我发出“make”命令时,我收到一个警告说有几个变量没有使用。查看我的代码后,我意识到这是由于“ifdef”语句的标识符未在任何代码中定义。我问过我的主管,他说我必须在我的 makefile 中提供这个标识符作为 CFLAG。

我做了一些研究,但仍然对这个过程感到困惑。在查看了相关的 stackoverflow 问题后,我认为我有一个解决方案。

我去了 VSCode 终端并输入“make CFLAGS=-Dvar=DATAVIS”,因为 DATAVIS 是相关标识符的名称。但是,我仍然知道变量没有被使用。我不知道下一步该尝试什么。

编辑:

这是我的makefile代码:(有解决方案)

CC=g++
RM= /bin/rm -vf

EDCFLAGS:=$(CFLAGS)
EDLDFLAGS:=$(LDFLAGS)

EDCFLAGS:= -Wall -fno-strict-aliasing -std=gnu11 -O2 $(EDCFLAGS)
EDLDFLAGS:= -lm -lpthread $(EDLDFLAGS)

TARGETOBJS= src/main.o src/datavis.o src/camera.o src/housekeeping.o    

TARGET = ATIKCAM-REWRITE-1.out

all: build/$(TARGET)

build:
    mkdir build

build/$(TARGET): $(TARGETOBJS) build
    $(CC) $(TARGETOBJS) $(LINKOPTIONS) -o $@ \
    $(EDLDFLAGS)

%.o: %.c
    $(CC) $(EDCFLAGS) -Iinclude/ -o $@ -c $<

clean:
    $(RM) build/$(TARGET)
    $(RM) $(TARGETOBJS)
4

1 回答 1

0

您的 makefile 期望DATAVIS定义宏(因为#ifdef DATAVIS),因此您的 CFLAGS 应该只是

-DDATAVIS

你写的var内容定义了一个宏DATAVIS

于 2020-11-24T08:41:48.177 回答