Как отключить оптимизацию в pro файле (qmake, c++)
В компиляторе gcc есть параметр оптимизации, где выбирается уровень оптимизации. Однако для qt отключение оптимизации выглядит так:
QMAKE_CXXFLAGS_RELEASE -= -O3
QMAKE_CXXFLAGS_RELEASE -= -O1
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE -= -O0 //аналогично для DEBUG
Вопрос: почему я должен отключать каждый уровень, если каждый последующий(по возрастанию) уровень включает в себя предыдущий? Могу ли я просто написать QMAKE_CXXFLAGS_RELEASE -= -O3 чтобы отключить всю оптимизацию?
Ответы (1 шт):
Компилятор GCC имеет несколько уровней оптимизации от -O0 (без оптимизации) до -O3 (максимальная оптимизация). Уровни -O2 и -O3 включают оптимизации, которые делает -O1, и -O3 включает оптимизации, которые делает -O2. Но когда речь идет об отключении оптимизации, флаги -O не работают накопительно. Это означает, что использование -O3 не включает -O2, -O1 и -O0.
Поэтому, если ты хочешь убедиться, что вся оптимизация отключена, тебе нужно явно отключить каждый уровень оптимизации. Вот почему ты видишь, что каждый уровень вычитается из QMAKE_CXXFLAGS_RELEASE в файле Qt.pro
Однако, чтобы отключить все оптимизации, тебе следует просто установить уровень оптимизации на -O0, который является уровнем без оптимизации. В QMake это выглядело бы так:
QMAKE_CXXFLAGS_RELEASE += -O0
QMAKE_CXXFLAGS_RELEASE -= -O2 -O3 -O1
Это удалит флаги -O2, -O3 и -O1 из конфигурации релиза и добавит флаг -O0, что в итоге отключит все оптимизации.