Управление синтаксисом & amp; отладка

Как я могу сделать синтаксический контроль и отладку в make-файле?
Я использовал компилятор g ++. Мы можем предположить, что следующий код нашего примера makefile. Спасибо за ваш совет.

all: sample1
sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ -c deneme.cpp
hello.o : hello.cpp
g++ -c hello.cpp

1

Решение

Как правило, у вас есть переменные makefile, такие как:

DEBUG=-Wall -g

и используйте их в ваших командах сборки:

sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
sample1-debug: deneme-debug hello-debug
g++ $(DEBUG) deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ -c deneme.cpp
deneme-debug: deneme.cpp
g++ $(DEBUG) -c deneme.cpp
hello.o: hello.cpp
g++ -c hello.cpp
hello-debug: hello.cpp
g++ $(DEBUG) -c hello.cpp

затем используйте make sample1-degug для вас отладочный исполняемый файл.

0

Другие решения

Что касается личного опыта, я бы сохранил исходную структуру make-файла и вставил переменную CDEBUG в каждую строку рецепта g ++. (конечно, make-файл может быть улучшен с статическая-модель, что здесь не так). Таким образом, все, что мне нужно сделать, чтобы сгенерировать отлаживаемую программу, это либо изменить объявление CDEBUG в Makefile, либо переопределение в вызове make ‘make «CDEBUG = -g»‘.

CDEBUG := -g #(or -ggdb, -g1- -g2 -gdwarf and so on)
all: sample1
sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ $(CDEBUG) -c deneme.cpp
hello.o : hello.cpp
g++ $(CDEBUG) -c hello.cpp

Решение, предложенное Полом, будет работать, но обратите внимание, что оно создаст множество файлов * -debug, которые не будут иметь никакого значения. Но, конечно, я буду рад понять иное.

0

По вопросам рекламы [email protected]