Qmake: processing options for both gcc and msvc

I would like to create a project file that will work with both msvc and gcc.

In the examples for speed optimization, you do cl /O2 and g++ -O3 .

But I do not know how to tell the project file to make a difference. I would like something like:

 msvc:QMAKE_CXXFLAGS_RELEASE += /O2 /openmp /arch:AVX else:QMAKE_CXXFLAGS_RELEASE += -O3 -march=native -fopenmp -D_GLIBCXX_PARALLEL 

which does not work sadly.

Another way is to change mkspecs and associate new ones with my application, but it is not very portable. Thanks!

+6
source share
2 answers

Jean, to be precise, you should use this based on your description:

 msvc:QMAKE_CXXFLAGS_RELEASE += /O2 /openmp /arch:AVX gcc:QMAKE_CXXFLAGS_RELEASE += -O3 -march=native -fopenmp -D_GLIBCXX_PARALLEL 
+8
source

Here is the project file I used. It works for Windows (msvc) and Linux (gcc)

 QT = core gui widgets HEADERS += \ render.h SOURCES += \ main.cpp \ render.cpp QMAKE_CXXFLAGS_RELEASE -= -O QMAKE_CXXFLAGS_RELEASE -= -O1 QMAKE_CXXFLAGS_RELEASE -= -O2 win32 { # For Windows QMAKE_CXXFLAGS += -openmp QMAKE_CXXFLAGS += -arch:AVX QMAKE_CXXFLAGS += -D "_CRT_SECURE_NO_WARNINGS" QMAKE_CXXFLAGS_RELEASE *= -O2 } linux { # For Linux QMAKE_CXXFLAGS += -fopenmp QMAKE_LFLAGS += -fopenmp QMAKE_CXXFLAGS += -mavx QMAKE_CXXFLAGS_RELEASE *= -O3 } 
0
source

Source: https://habr.com/ru/post/952253/


All Articles