Russian Qt Forum
Ноябрь 25, 2024, 16:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Почему qmake оптимизирует с -O2, а не с -O3?  (Прочитано 8058 раз)
yarick
Гость
« : Январь 26, 2013, 16:26 »

В релиз-версии qmake вызывает g++ с ключём -O2. Но я читал что есть ещё -O3, которая представляет более крутую оптимизацию, например встраивание инлайн-функций и прочее, что бы пригодилось. Зачем оптимизировать меньше, если можно больше? Как заставить qmake использовать -O3?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Январь 26, 2013, 17:29 »

О3 специфический режим оптимизации, он не всегда оптимальнее О2, поищи по инету.

О том как использовать ключи компилятора и линкера смотри Асистент
На память не помню, что-то вроде:
cxx-flags += ....
нужно добавить в pro-файл
Записан

Юра.
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Январь 27, 2013, 13:30 »

Как заставить qmake использовать -O3?
В pro-файл добавить, например, следующие строки:
Код:
*-g++ {
  QMAKE_CXXFLAGS += -O3
}
Записан

Пока сам не сделаешь...
twp
Гость
« Ответ #3 : Январь 28, 2013, 18:29 »

Можно каждый раз прописывать в pro-файле, а можно всего один раз отредактировать файл qmake.conf из mkspecs.
Ведь при генерации мэйкфайлов qmake всегда считывает параметры из qmake.conf.
После редактирования желательно пересобрать Qt
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #4 : Январь 29, 2013, 10:06 »

Можно каждый раз прописывать в pro-файле, а можно всего один раз отредактировать файл qmake.conf из mkspecs.

Вряд ли это хороший вариант. Для разных проектов могут понадобиться разные параметры компилятора/линкера, все равно придётся переопределять. Всякие QMAKE_* для того и сделаны, чтоб каждый раз mkspecs не править.
Записан

Пока сам не сделаешь...
twp
Гость
« Ответ #5 : Январь 29, 2013, 13:44 »

Можно каждый раз прописывать в pro-файле, а можно всего один раз отредактировать файл qmake.conf из mkspecs.

Вряд ли это хороший вариант. Для разных проектов могут понадобиться разные параметры компилятора/линкера, все равно придётся переопределять. Всякие QMAKE_* для того и сделаны, чтоб каждый раз mkspecs не править.
Что я не так написал? Еще раз напишу более доходчиво - если надо использовать одни и те же опции компилятора/линкера для всех проектов (как новых так и уже созданных), лучше один раз подправить qmake.conf чем постоянно править pro-файлы. Еще один способ - это определить все общие опции в pri-файле, например config.pri и не забывать добавлять его в pro-файл.
Записан
twp
Гость
« Ответ #6 : Январь 29, 2013, 14:03 »

Кроме того, нужно использовать QMAKE_CXXFLAGS_RELEASE поскольку QMAKE_CXXFLAGS применяется как к релизной так и дебажной сборке.
Записан
yarick
Гость
« Ответ #7 : Февраль 26, 2013, 13:07 »

Добавил, теперь при компиляции выводит что-то вроде
"g++ -c -pipe -std=gnu++11 -O2 -O3 ..."
Т.е. две опции подряд... Это нормально, т.е. он будет оптимизировать в режиме O3?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #8 : Февраль 26, 2013, 13:52 »

"g++ -O2 -O3 ..."
Вроде наоборот надо, кто первый - того и тапки.
Записан

Пока сам не сделаешь...
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Февраль 26, 2013, 13:54 »

Добавил, теперь при компиляции выводит что-то вроде
"g++ -c -pipe -std=gnu++11 -O2 -O3 ..."
Т.е. две опции подряд... Это нормально, т.е. он будет оптимизировать в режиме O3?

да

Цитировать
If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #10 : Февраль 26, 2013, 14:48 »

Цитировать
If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.
Действительно, получается кто последний - того и тапки...

Тогда тут еще особенность:
QMAKE_CXXFLAGS добавляет ключи перед ключами оптимизации,
QMAKE_CXXFLAGS_RELEASE, QMAKE_CXXFLAGS_DEBUG там можно переопределить ключи оптимизации.
Записан

Пока сам не сделаешь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 23.