Qmake: варианты обработки как gcc, так и msvc

Я хотел бы создать файл проекта, который будет работать как с msvc, так и с gcc.

В примерах для оптимизации скорости вы делаете cl /O2 и g++ -O3.

Но я не знаю, как сказать файлу проекта, чтобы сделать разницу. Мне хотелось бы что-то вроде:

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

который не работает печально.

Другой способ - изменить mkspecs и связать новые с моим приложением, но он не очень портативен. Спасибо!

2 ответа

Жан, если быть точным, вы должны использовать это на основе вашего описания:

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


Вот файл проекта, который я использовал. Он работает для Windows (msvc) и 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
}

licensed under cc by-sa 3.0 with attribution.