Change compilation flags in Qt under Mac OS X?
Question
I installed Qt for Mac, and am compiling my Qt project after adding in the .Pro file
CONFIG(release, debug|release):QMAKE_CXXFLAGS += -O3 -fomit-frame-pointer
to optimize for speed.
However, I always see that the command where g++ is ran, includes -Os, which optimizes for size. I would like to remove it.
I tried several approaches, like
CONFIG(release, debug|release):QMAKE_CFLAGS_RELEASE -= -Os
CONFIG(release, debug|release):QMAKE_CXXFLAGS -= -Os
and
CONFIG(release, debug|release):QMAKE_CXXFLAGS = -O3 -fomit-frame-pointer
CONFIG(release, debug|release):QMAKE_CFLAGS_RELEASE = -O3 -fomit-frame-pointer
(no +)
But nothing. -Os ALWAYS appear.
How do I change this?
I found the qmake.conf file under /usr/local/QT4.5/mkspecs. It includes a mac-g++.conf file, but I cannot change it, and chmod doesn't work: chmod: mac-g++.conf: Operation not permitted
Any ideas?
Solution
i was able to solve this by editing my project's .pro file:
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE += -O3
i verified that it took effect by monitoring the compile output.
OTHER TIPS
You should run qmake
command in your project directory after you edited the .pro
file.
The chmod command is failing because that directory is owned by root (i.e., not your user).
You could handle that with:
sudo chmod ....
I guess my big question is whether you know that -O3 really optimizes for speed or not. As Pavel indicated, you can edit the Makefile and build manually and test. My guess is that -O3 won't make much of a difference and might be slightly worse.
As far as setting CXXFLAGS in Qt Creator, your best bet is to override the call to Make. In the "Projects" section, go to "Build Steps" and "Make" and add CXXFLAGS='-O3 -fomit-frame-pointer' to the "Make arguments" section.
Hope that helps!