caleb.breckon
caleb.breckon

Reputation: 1364

Configuring my makefile for gdb

I've used gdb before, but never with a makefile and only configuring in very simple ways. g++ -g -o file.cpp, etc. I've tried everything, and I cannot get it to recognize debugging objects. I want to debug all of my executable compile.

I'm running g++ and Ubuntu.

compile: scanner.o parser.o listing.o locals.o globals.o
    g++ -o compile scanner.o parser.o listing.o locals.o globals.o

scanner.o: scanner.c locals.h globals.h listing.h tokens.h
    g++ -c scanner.c

scanner.c: scanner.l
    flex scanner.l
    mv lex.yy.c scanner.c

parser.o: parser.c listing.h locals.h globals.h
    g++ -c parser.c

parser.c tokens.h: parser.y
    bison -d -v parser.y
    mv parser.tab.c parser.c
    mv parser.tab.h tokens.h

listing.o: listing.cc
    g++ -c listing.cc

locals.o: locals.cc
    g++ -c locals.cc

globals.o: globals.cc
    g++ -c globals.cc

Upvotes: 0

Views: 6518

Answers (1)

William Pursell
William Pursell

Reputation: 212594

Do not override the default rules. Just assign CC and CFLAGS as necessary. In other words, your Makefile should be (in its entirety):

CC=g++    # Not best practice.  See comments below
CFLAGS=-g
compile: scanner.o parser.o listing.o locals.o globals.o
    $(CC) $(CFLAGS) -o $@  $^

scanner.o: scanner.c locals.h globals.h listing.h tokens.h
parser.o: parser.c listing.h locals.h globals.h

scanner.c: scanner.l
    flex scanner.l
    mv lex.yy.c scanner.c

parser.c tokens.h: parser.y
    bison -d -v parser.y
    mv parser.tab.c parser.c
    mv parser.tab.h tokens.h

As an aside, you really should use CXX to specify a C++ compiler and name your source code files appropriately. (Use *.c for C, *.cxx for C++) Since you are using non standard names, you need to fool make by using a C++ compiler for CC, which is not really the best practice.

Upvotes: 3

Related Questions