Как включить обработку исключений в mingw

Я новичок в программировании Mingw и C++. Я пытаюсь создать проект C++, но получаю следующую ошибку.

ошибка: обработка исключений отключена, используйте -fexceptions для включения.

Где мне нужно передать этот параметр -fexceptions. Когда я пытаюсь

mingw32-make -fexceptions

Я получаю следующую ошибку.

mingw32-make: исключения: нет такого файла или каталога


person Vinod    schedule 15.11.2012    source источник
comment
Разве вы не должны добавлять -fexceptions к CXXFLAGS в вашем make-файле вместо того, чтобы передавать его в качестве аргумента командной строки?   -  person Praetorian    schedule 15.11.2012
comment
На самом деле, это проект QT, и файл make был сгенерирован с использованием qmake. Итак, мне нужно изменить сгенерированный файл make?   -  person Vinod    schedule 15.11.2012


Ответы (2)


Поскольку вы используете Qt, добавьте «исключения» в переменную CONFIG в файле вашего проекта (файл *.pro):

CONFIG += exceptions

Это должно позаботиться о передаче правильных флагов компилятора.

В любом случае не изменяйте сгенерированный Makefile. С помощью qmake в Qt Makefile — это просто автоматически сгенерированный файл.

person Nikos C.    schedule 15.11.2012

Если вы используете прямой g++ из командной строки, вы должны сделать:

g++ -fexceptions ...rest of command...

Если вы используете Makefiles, добавьте его в CXXFLAGS (а затем просто выполните сборку с make, как обычно):

# in your Makefile
CXXFLAGS := -fexceptions
...rest of your makefile...

Причина, по которой вы получаете ошибку «Нет такого файла или каталога», заключается в том, что -f является опцией для make, которая указывает файл для использования, поэтому, когда вы передаете -fexceptions в make, он говорит: «-f означает, что он хочет использовать следующий файл «exceptions» ... позвольте мне попытаться найти файл с именем «исключения»», и тогда, конечно, он выдает ошибку, когда не может найти файл с таким именем.

Переменная CXXFLAGS в вашем Makefile передается вашему компилятору как флаги/параметры, и именно здесь вы должны вставлять любые дополнительные флаги компилятора (например, -fexceptions).

Изменить. Если вы используете qmake, попробуйте добавить CONFIG += exceptions в файл проекта.

person Cornstalks    schedule 15.11.2012