То, что делает qmake, просто создает make-файл. Сгенерированный Makefile использует только флаги компилятора из CXXFLAGS
(плюс DEFINES
) и INCPATH
make-переменных, если у вас нет некоторых правил, созданных вручную. Это ясно видно из сгенерированного make-файла.
И эти переменные make происходят непосредственно из qmake vars, таких как QMAKE_CXXFLAGS
, DEFINES
и INCLUDEPATH
. (Это делается внутренне в исходном коде qmake; ну, на самом деле, на некоторых платформах все может быть сложнее, поэтому обратитесь также к исходному коду qmake).
Теперь QMAKE_CXXFLAGS
- это просто переменная qmake. Таким образом, в принципе, он может быть изменен в любой строке любого скрипта qmake. Учитывая, что эти скрипты зависят от ОС / архива / компилятора / опций сборки Qt / опций приложения и т. Д. c. Ваши ожидания «идеального ответа» слишком сильно растянуты.
Но, грубо говоря, qmake использует свои сценарии в следующем порядке (подсказка: смотрите полный список зависимостей в сгенерированном make-файле):
features/spec_pre.prf
<QMAKE-SPEC>/qmake.conf (usually includes features/qt_config.prf and a ton of Qt-related stuff)
features/spec_post.prf
features/default_pre.prf
<user project>
features/default_post.prf
all features/xxx.prf according to the final CONFIG value (note: order reversed!)
Так что, если вы пропустите какой-либо флаг в своем проекте, он, вероятно, происходит либо от default_post.prf
(например, флаги выпуска для сборки выпуска), либо от CONFIG
(то есть features/xxx.prf
).