CXXFLAGS используется неявным правилом. Выполните make -n -p, чтобы увидеть полный список переменных и правил, которые Make генерирует из своих внутренних наборов правил и файла make.
-g параметры отладки используются только на этапе компиляции. -O опции, возможно, используются на этапах компиляции и компоновки. Вы можете использовать оба вместе. С моей страницы руководства gcc:
GCC позволяет использовать -g с -O.
Ярлыки, используемые оптимизированным кодом
может иногда вызывать удивление
Результаты:
некоторые переменные, которые вы объявили, могут вообще не существовать; поток контроля
может ненадолго переместиться туда, где вы этого не сделали
ожидать этого; немного
операторы не могут быть выполнены, потому что они вычисляют константу
результаты или их значения уже были
под рукой; некоторые государственные
Элементы могут выполняться в разных местах, потому что они были
вышел из петель.
Тем не менее, оказывается возможным отладить оптимизированный вывод.
Это делает разумным использование
оптимизатор для программ, которые могут содержать ошибки.
-fno-omit-frame-pointer фактически снижает оптимизацию. Оптимизация может помешать отладке, и тот, кто написал этот make-файл, явно намеревался запустить отладчик на оптимизированном коде. Если вам неясно из руководства gcc, как он работает, вы можете захотеть в субботу сесть за справочное руководство по архитектуре Intel или AMD и узнать о вызовах функций и передаче аргументов на уровне инструкций. (Опять же, может и нет. :))
Положение имеет значение в Makefiles. Я бы оставил этот файл в конце. В противном случае существует риск нарушения проверки включаемого файла.