Makefile不应用-g一致尽管规则



我无法在gdb中调试我的应用程序,因为符号表没有加载,我正在通过我的程序向后工作以确定导致这种情况发生的原因。提到的第一个建议是在编译时包括-g标志,我在makefile的CFLAGS部分设置了它,但它似乎没有应用到我的文件中。

如果没有写一个用我的文件名硬编码的makefile来确保它工作,我如何修改现有的makefile来确保-g标志应用于所有编译的文件?

$ make
g++    -c -o main.o main.cpp
g++    -c -o scanner.o scanner.cpp
g++ -g -Wall -Wno-unused-variable -o scanner main.o scanner.o

我找到了这个makefile并插入了我的信息

CFLAGS = -g -Wall -Wno-unused-variable
OBJFILES = main.o scanner.o 
TARGET = scanner
all: $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) $< -c

$(TARGET): $(OBJFILES)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJFILES)

.PHONY: clean

clean:
rm -f $(OBJFILES) $(TARGET) *~

你只需要添加一行:

CXXFLAGS = -g

由于您的Makefile没有提供从c++构建的规则,Make使用默认规则。这些规则将CXXFLAGS应用于编译命令,而不是CFLAGS。不要覆盖默认规则;只需添加到CXXFLAGS。我建议您删除%.o: %.c的规则,因为这是Make将使用的默认规则,并且显式地提供副本没有任何好处。

最新更新